[英]Linq problem with group by clause
我在C#項目中使用group by子句執行Linq查詢時遇到一些問題。 下面是查詢:
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)
);
我希望查詢將以比目前所看到的更好的樣式打印在頁面中:(。無論如何,我需要將我在group by子句中選擇的所有文件都放入ControlFormReportPartialResults的構造函數中,但是它給出了我期望的錯誤類型。
任何幫助都非常感謝。
問候,
達里奧
假設其余查詢正確,那么您的問題只是group by
子句中的語法問題(特別是使用new
運算符創建匿名類型)。 您正在使用括號,但應使用花括號。 這應該可以解決問題:
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.