我目前正在根据对象名称在我的列表 SOURCEFIELDS 中的存在来求和对象的 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/

10-13 01:04