如果我太努力的话,我可能会舍弃术语,所以通过代码来描述会更容易:
var fooGroup = fooList.GroupBy(x => x.SomeID);<br/>
//fooGroup is now of type IEnumerable<IGrouping<int, Foo>><br/>
var someCount = fooGroup.Count(y => y.Where(f => f.Bar == "Bar"));
由于此错误,上述代码将无法编译:“无法将 lambda 表达式转换为委托(delegate)类型 System.Func<System.Linq.IGrouping<int,Foo>,bool>
因为 block 中的某些返回类型不能隐式转换为委托(delegate)返回类型”
我认为答案很简单,但我不太清楚如何做到这一点。
最佳答案
您尝试对分组依据执行的操作没有多大意义。我提出以下建议。
如果您要查找有多少个元素具有 Bar == "Bar"
,请在组之前执行。
var someCount = fooList.Count(y => f.Bar == "Bar");
如果您要对包含符合相同条件的元素的组进行计数。
var fooGroup = fooList.GroupBy(x => x.SomeID)
.Where(x => x.Any(z => z.Bar == "Bar")).Count();
关于c# - 使用 LINQ,获取满足分组条件的项目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14865099/