我有一个简单的 LINQ 问题:
我有一个 FooBar 集合。 Foobar 具有 foo 属性和 bar 属性。 我想聚合 foo 和 bar,而不需要多次运行我的 foobar 集合。
即。我想要类似于 SQL 的东西:
SELECT SUM(Foo), SUM(Bar) From FooBars
或
int fooSum, barSum;
foreach (var foobar in foobars)
{
fooSum += foobar.Foo;
barSum += foobar.Bar;
}
是否有一种优雅的方法可以在 LINQ 中使用复合选择(或类似的)来编写此代码?
最佳答案
您可以使用Aggregate
,将运行总计保存在匿名类型或元组中。尽管我自己可能会使用简单的 foreach
循环。
var result = foobars.Aggregate(new { FooSum = 0, BarSum = 0 },
(a, x) => new {
FooSum = a.FooSum + x.Foo,
BarSum = a.BarSum + x.Bar
});
Console.WriteLine("FooSum=" + result.FooSum + ", BarSum=" + result.BarSum);
关于c# - LINQ 复合聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5580997/