如果值为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表达式转换为type '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();
为什么当我从它接受的count方法中删除g=> !g.isScheduled
表达式时呢?
答案 0 :(得分:3)
发现它...... ARGH!
当我可以使用“g”作为组内部lambda表达式的变量时,它指的是原始组“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();
现在一切都还好