将Linq中的分组结果中的项目统计为Sql

问题描述:

我想根据项目ID和计数每个组中项目的数量对查询结果进行分组。最后,我将只需要一个项目从每个组和组的计数显示将Linq中的分组结果中的项目统计为Sql

results.GroupBy(r=>r.ID).... 

你可以做一些分组Linq中是这样的:

var items = from r in rows 
      group r by r.ID into g 
      select new { Count = g.Count(), First = g.First() }; 

...但是,这会给你有一个“Count”属性(int)和一个“First”属性(与你的行类型相同)的对象集合。

你可能想要做的是选择与你的行类似的东西,除了count属性。一种方法是像这样一场一场:

var items = from r in rows 
      group r by r.ID into g 
      let f = g.First() 
      select new 
      { 
       f.ID, f.Name, f.Foo, f.Bar, // etc 
       Count = g.Count() 
      }; 
+0

选项2似乎很好地工作谢谢 – zsharp 2009-10-28 02:40:45