2

如果值为真,我想计算列表中的所有项目,并计算假值。

我有这个:

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从它接受的计数方法中删除表达式时?

4

1 回答 1

3

找到了……啊!

当我可以使用“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();

现在一切都好

于 2013-09-01T06:39:24.360 回答