c# - 使用 LINQ,获取满足分组条件的项目数

标签 c# .net linq

如果我太努力的话,我可能会舍弃术语,所以通过代码来描述会更容易:

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/

相关文章:

c# - 从同步操作方法中调用带有await的异步方法

c# - 使用字典在数据表上动态构建条件

c# - 如何从 'Guid' 返回 'Nullable<Guid>' ?

javascript - AngularJS - 从 .NET Controller 生成 View 只执行一次

c# - 关于 OoOP 的 Thread.MemoryBarrier() 错误的解释

c# - 为什么不能在 .Net 的静态方法中使用关键字 'this'?

c# - 如何使用 ImmutableList<> 而不是 List<> 来获得线程安全?

c# - 自定义编译器警告

javascript - 为什么自定义验证器在 jQuery 的 document.ready 中不起作用

c# - 制作一堆逗号