簡體   English   中英

LINQ查詢語法按表達式分組的麻煩

[英]Trouble with linq query syntax group by expression

我正在創建時間表應用,我想顯示以下內容:

對於每個進入網格的員工:

ID,名稱,任務名稱,SunHours,MondayHours ...等等,星期五Fours

Employee_Table
empid
name

Timesheet
id
empid
taskid
sat
sun
mon
tues
wed
thurs
fri
sat

Task
taskid
taskname

時間表表

我無法通過linq查詢創建對象,因為我無法訪問時間表特定的數據,例如sun,mon,tue值。 這是我所做的:

   var result = (from e in db.Employees
                          join t in db.TimeSheets on e.Id equals t.EmployeeId
                          group e by t.TaskId into g
                          orderby g.Key
                          select new
                          {
                              empid = g.Key,
                              name = g.Select(e => e.Name),
                              sat = g.Select(s => s.Saturday), // cannot access this info
                              sun = g.Select(s => s.Sunday),
                              mon = g.Select(s => s.Monday),
                              tue = g.Select(s => s.Tuesday),
                              wed = g.Select(s => s.Wednesday),
                              thurs = g.Select(s => s.Thursday),
                              fri = g.Select(s => s.Friday),
                          });

更新:

所以,我結束了這一點-似乎代表了我所追求的。

var res = (from e in db.Employees
               join t in db.TimeSheets on e.Id equals t.EmployeeId

               group t by new { t.EmployeeId } into g
               select new
               {
                   id = g.Key.EmployeeId,
                   data = g
                   });

根據此答案 ,按“ e”分組只會使“ t”個對象超出范圍。

將時間表對象分組后,可以加入到雇員表。 看起來您可能還需要.Sum(s => s.mon)而不是.Select(s => s.mon)

編輯:.Sum()而不是.Max()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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