Vb.net 基于布尔运算的Linq计数

Vb.net 基于布尔运算的Linq计数,vb.net,linq,Vb.net,Linq,我正在尝试运行一个linq查询,但无法正确执行 我有一个名为“引用”的自定义类的列表,这个类有两个属性:字符串和布尔值。我试图得到代码的净总数(按代码分组),因此这将是负=假(全部为正)的代码计数,减去负=真(全部为负)的代码计数。“事件”类中没有数量,每个事件计为1个负或正 我尝试在3个单独的查询中执行此操作,但都不起作用,理想情况下,我希望在1个查询中执行此操作 如果你需要更好的解释或者我不清楚,请告诉我 编辑:示例输入/输出 输入: Code Negative --------

我正在尝试运行一个linq查询,但无法正确执行

我有一个名为“引用”的自定义类的列表,这个类有两个属性:字符串和布尔值。我试图得到代码的净总数(按代码分组),因此这将是负=假(全部为正)的代码计数,减去负=真(全部为负)的代码计数。“事件”类中没有数量,每个事件计为1个负或正

我尝试在3个单独的查询中执行此操作,但都不起作用,理想情况下,我希望在1个查询中执行此操作

如果你需要更好的解释或者我不清楚,请告诉我

编辑:示例输入/输出

输入:

Code       Negative
-------------------
123        True
123        True
123        False
456        True
456        True
456        True
789        False
789        False
输出:

Code       Count
----------------
123        -1
456        -3
789        +2

您可以尝试将您的解释直接翻译为LINQ,如下所示:

var totalByCode = data
    .GroupBy(item => item.Code)
    .ToDictionary(
         g => g.Key
    ,    g => g.Count(o => !o.Negative) - g.Count(o => o.Negative)
    );

这将生成一个
字典
,它将
代码
映射到相应的计数,计算为非负和负事件之间的差异。

如果您发布了您的尝试,可能会有所帮助-您最初尝试了什么?任何输入/输出示例?请对您的答案添加一些解释。这是最简单的答案为我工作。谢谢你也注意到了这个标签(VB.NET)
from item in data
group item by item.Code into g
select new { Code = g.Key, Count = g.Sum(x => x.Negative ? -1 : 1) }
Dim netTotal = From o In Occurrences
               Group By o.Code
               Into Sum(If(o.Negative, -1, 1))