簡體   English   中英

Linq問題與group by子句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM