c# - 根据列表中的存在和数量求和属性

标签 c# linq sum

我目前正在根据列表 SOURCEFIELDS 中对象的 NAME 的存在来对对象的 SIZE 属性的值求和(参见代码)。

string[] SourceFields = MergeParameters
  .Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);

int OverallLength = MainFields
  .FindAll(FO => SourceFields
     .Any(List => FO.Name.Equals(List)))
  .Sum(FO => FO.Size);

我的问题是,如果一个值在 SOURCEFIELDS 中出现两次(这是可能的),我需要将该值加倍(或者无论出现多少次)。

这可以通过 linq 查询实现吗?如果可能,我想避免嵌套循环。

最佳答案

您可以使用Join 扩展方法:

int OverallLength = MainFields.Join(SourceFields, x => x.Name, y => y,
    (x, y) => x).Sum(x => x.Size);

顺便说一下,最好调用 SourceFields.Contains(FO.Name) 而不是 SourceFields.Any(List => FO.Name.Equals(List)).

关于c# - 根据列表中的存在和数量求和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46199772/

相关文章:

c# - 在 c# Specflow 中断言 Json 输出

c# - LINQ 查询中的 WHERE 子句似乎失败

postgresql - Postgres连续累计计数

MySQL:如果行相等则求和

r - 求和 R 中 k 个变量的正值

c# - 添加 Camelcase 约定包后的反序列化错误

c# - 如何将 tsharks 输出实时传输到 C# 程序

c# - 在 asp.net mvc 中触发并忘记异步方法

c# - 如何将这个 12 行的方法转换为 1 行的 LINQ 表达式?

c# - LINQ 包含在一对多的情况下,.Where() 不起作用?