LINQ group by expression syntax

房东的猫 提交于 2020-08-21 03:52:43

问题


I've got a T-SQL query similar to this:

SELECT r_id, r_name, count(*)
FROM RoomBindings
GROUP BY r_id, r_name

I would like to do the same using LINQ. So far I got here:

var rooms = from roomBinding in DALManager.Context.RoomBindings
                        group roomBinding by roomBinding.R_ID into g
                        select new { ID = g.Key };

How can I extract the count(*) and r_name part?


回答1:


Try this:

var rooms = from roomBinding in DALManager.Context.RoomBindings
                        group roomBinding by new 
                        { 
                           Id = roomBinding.R_ID, 
                           Name = roomBinding.r_name
                        }
                        into g
                        select new 
                        { 
                           Id = g.Key.Id,
                           Name = g.Key.Name,
                           Count = g.Count()  
                        };

Edit by Nick - Added method chain syntax for comparison

var rooms = roomBinding.GroupBy(g => new { Id = g.R_ID, Name = g.r_name })
                       .Select(g => new
                           {
                               Id = g.Key.Id,
                               Name = g.Key.Name,
                               Count = g.Count()
                           });


来源:https://stackoverflow.com/questions/1796165/linq-group-by-expression-syntax

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!