2012-09-24 33 views
0

我有三個實體ClassC,ClassS和ClassSA。我想通過使用LINQ來應用組。C#Linq:Group通過不同實體的不同列

using (var db = new SEntities()) 
{ 
    var result = from c in db.ClassC 
    join s in db.ClassS on c.ID equals s.CID 
    join sa in db.ClassSA on s.SAID equals sa.ID 
    group sa by 
    new { c.Type, s.Date.Year} 
    into g 
    select new ClassSAY { Year = g.Key.Year, CI = g.Key.CIType, Count = g.Count(sa => sa.ID)}; 
} 

我想加入ClassC,ClassS和ClassSA;由兩個不同類的兩個不同屬性組成,並將結果的一部分存儲在另一個類的屬性中。我已經找到了只有一個班級的屬性搜索組。

它給錯誤:

  1. 無法轉換lambda表達式的委託類型「System.Func < SG.DAL.SA,布爾>」,因爲一些塊的返回類型不隱式轉換爲委託返回類型

  2. 無法隱式轉換類型「長」到「布爾」

感謝。

+0

http://stackoverflow.com/questions/1869001/linq-group-by-multiple-fields-syntax-help –

+0

HTTP ://www.manojn.com/blog/post/Group-by-Multiple-Columns-using-Anonymous-Types-in-LINQ-to-SQL.aspx –

回答

0

儘量使用像

Count = g.Count() 

,而不是

Count = g.Count(sa => sa.ID) 
+0

謝謝......它的工作。萬分感謝... –