[英]How to add more columns to a grouped result in LINQ?
您可以簡單地按Id
對記錄進行分組,然后使用FirstOrDefault
獲取Name
from u in Users
join l in Languages on u.LanguageId equals l.Id
group l by l.Id into g
orderby g.Count() descending
select new { Id = g.Key, NameAndCount = g.First().Name + " (" + g.Count() + ")" }
您只需要對代碼進行一些更改即可。 您應該按照語言和組的兩個字段/列對組進行分組,而不是按用戶分組。
from u in Users
join l in Languages on u.LanguageId equals l.Id
group l by new { l.Id, l.Name } into g
orderby g.Count() descending
select new { Id = g.Key.Id, NameAndCount = g.Key.Name + " (" + g.Count() + ")" }
另一個案例:
請注意,我們用於分組的每個字段都可以從.Key
訪問,您可以命名字段
例1。
// ...
group l by new { MyId = l.Id, MyName = l.Name } into g
orderby g.Count() descending
select new { Id = g.Key.MyId, NameAndCount = g.Key.MyName + " (" + g.Count() + ")" }
如果在另一種情況下,我們不想丟失結果中的集合,只需添加一個UserList變量,如下例所示。
例2:
// ...
group l by new { l.Id, l.Name } into g
orderby g.Count() descending
select new { Id = g.Key.Id, NameAndCount = g.Key.Name + " (" + g.Count() + ")", UserList = g.ToList() }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.