如何用枚举器总结一个自己的类的数组/列表?

时间:2017-08-07 05:30:02

标签: c# linq

如何总结一个类列表的属性?

long totalSize = 0;
foreach (ManifestEntry fileEntry in moduleManifest)
{
    totalSize += fileEntry.Size;
}

在ruby中我们可以做一个枚举器,它返回一个数组并简单地总结一下。

totalSize = moduleManifest.map{&:Size}.sum

我在c#中看到了一些调查员,但我没理解这些。 什么是正确的语法来达到相同的结果?

我尝试了一些互联网片段,但它们都涉及一些我无法适应的演员。

2 个答案:

答案 0 :(得分:2)

你几乎就在那里 - 不需要Enum.GetValues(moduleManifest)而只需要:

moduleMainfest.Select(x => x.Size).Sum();

然后使用带有谓词的linq .Sum

long totalSize = moduleManifest.Sum(fileEntry => fileEntry.Size);

可能值得通过getting started with linq101 linq samples

答案 1 :(得分:1)

您的代码看起来很好,希望您获得预期的输出。我认为相反,为了询问内联查询,您必须学习https://jsfiddle.net/Ljck1wmL/7/。这次我可以帮助您使用您正在寻找的内联代码:但强烈建议您在复制这些代码之前先阅读Linq及其LINQ的基础知识。

var totalSize = moduleManifest.Sum(x=> x.Size);