[英]Linq problem with group by clause
I have some problems in executing a Linq query with the group by clause in a C# project. 我在C#项目中使用group by子句执行Linq查询时遇到一些问题。 Here following the query: 下面是查询:
var items = (
from controlForm in dataContext.ControlForms
join controlFormStatus
in dataContext.ControlFormStatus
on controlForm.FK_ControlFormStatus equals controlFormStatus.Id
join docCheck
in dataContext.DocumentChecks
on controlForm.Id equals docCheck.FK_ControlForm
join checkResult
in dataContext.CheckResults
on docCheck.FK_CheckResult equals checkResult.Id
where controlForm.FK_ControlCycle.ToString().Equals(controlCycleId)
& controlFormStatus.Description.Equals(Constants)
| Description.Equals(Constants.ControlFormStatusApprovalProcessOwner))
group controlForm by
new (controlForm.Id,
controlForm.FK_ControlCycle,
controlForm.FK_SampleNode,
controlForm.FK_Control,
controlForm.TestExecutor,
controlForm.FK_ControlFormStatus)
into ctrlForm
select
new ControlFormReportPartialResults(
ctrlForm.Key.Id,
ctrlForm.Key.FK_ControlCycle,
ctrlForm.Key.FK_SampleNode,
ctrlForm.Key.FK_Control,
ctrlForm.Key.TestExecutor,
ctrlForm.Key.FK_ControlFormStatus ,
3 / 2)
);
I hope the query will be printed out in the page in a better style than I am seeing at the moment :(. Anyway I need to get in the constructor of ControlFormReportPartialResults all the fileds I have selected in the group by clause, but it gives me an error type expected. 我希望查询将以比目前所看到的更好的样式打印在页面中:(。无论如何,我需要将我在group by子句中选择的所有文件都放入ControlFormReportPartialResults的构造函数中,但是它给出了我期望的错误类型。
Any help is really appreciated. 任何帮助都非常感谢。
Regards, 问候,
Dario 达里奥
Assuming that the rest of the query is correct, your issue is just a syntax problem in your group by
clause (specifically using the new
operator to create an anonymous type). 假设其余查询正确,那么您的问题只是group by
子句中的语法问题(特别是使用new
运算符创建匿名类型)。 You're using parens, but curly braces should be used. 您正在使用括号,但应使用花括号。 This should do the trick: 这应该可以解决问题:
var items = (
from controlForm in dataContext.ControlForms
join controlFormStatus
in dataContext.ControlFormStatus
on controlForm.FK_ControlFormStatus equals controlFormStatus.Id
join docCheck
in dataContext.DocumentChecks
on controlForm.Id equals docCheck.FK_ControlForm
join checkResult
in dataContext.CheckResults
on docCheck.FK_CheckResult equals checkResult.Id
where controlForm.FK_ControlCycle.ToString().Equals(controlCycleId)
& controlFormStatus.Description.Equals(Constants)
| Description.Equals(Constants.ControlFormStatusApprovalProcessOwner))
group controlForm by
new {controlForm.Id, /*updated*/
controlForm.FK_ControlCycle,
controlForm.FK_SampleNode,
controlForm.FK_Control,
controlForm.TestExecutor,
controlForm.FK_ControlFormStatus}
into ctrlForm
select
new ControlFormReportPartialResults(
ctrlForm.Key.Id,
ctrlForm.Key.FK_ControlCycle,
ctrlForm.Key.FK_SampleNode,
ctrlForm.Key.FK_Control,
ctrlForm.Key.TestExecutor,
ctrlForm.Key.FK_ControlFormStatus ,
3 / 2)
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.