LINQ Group by and "count-if"
本文关键字:quot count-if and Group by LINQ | 更新日期: 2023-09-27 18:29:51
如果一个值为true,则我想对列表中的所有项进行计数,计数为false。
我有这个:
Items.GroupBy(
i => i.ItemID,
i => new { isScheduled = i.isScheduled },
(key, g) => new ItemStatistics()
{
ItemID = key,
ScheduledItems = g.Count(g=>g.isScheduled),
UnscheduledItems = g.Count(g=> !g.isScheduled)
}).ToList();
这给了我以下编译错误:
无法将lambda表达式转换为类型"System.Collections.Generic.IEqualityComparer",因为它不是代表型
就好像它期望一种不同的方法过载
当我这样做的时候,一切似乎都很好。。。
Items.GroupBy(
i => i.ItemID,
i => new { isScheduled = i.isScheduled },
(key, g) => new ItemStatistics()
{
ItemID = key,
ScheduledItems = g.Count(),
UnscheduledItems = g.Count()
}).ToList();
为什么当我从计数方法中删除g=> !g.isScheduled
表达式时,它会接受它?
找到了。。。啊!
当我可以使用"g"作为组内部lambda表达式的变量时,becuse指的是原始组"g"。所以我把g=>g.isScheduled
改成了i=>i.isScheduled
Items.GroupBy(
i => i.ItemID,
i => new { isScheduled = i.isScheduled },
(key, g) => new ItemStatistics()
{
ItemID = key,
ScheduledItems = g.Count(i=>i.isScheduled),
UnscheduledItems = g.Count(i=> !i.isScheduled)
}).ToList();
现在一切都好了