LINQ group by表达式语法

agn*_*zka 42 c# linq

我有一个类似这样的T-SQL查询:

SELECT r_id, r_name, count(*)
FROM RoomBindings
GROUP BY r_id, r_name
Run Code Online (Sandbox Code Playgroud)

我想用LINQ做同样的事情.到目前为止我到了这里:

var rooms = from roomBinding in DALManager.Context.RoomBindings
                        group roomBinding by roomBinding.R_ID into g
                        select new { ID = g.Key };
Run Code Online (Sandbox Code Playgroud)

如何提取count(*)和r_name部分?

bru*_*nde 74

试试这个:

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()  
                        };
Run Code Online (Sandbox Code Playgroud)

由Nick编辑 - 添加方法链语法进行比较

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()
                           });
Run Code Online (Sandbox Code Playgroud)