我在使用 .SELECT
语句时遇到了困难。
这是我的代码片段;
var payoutsPerLocation = locations.Select(l => l.Payouts);
foreach (var payouts in payoutsPerLocation)
{
Console.WriteLine(payouts.Sum(pos=>pos.Amount));
}
位置中的位置是列表,并且一个位置具有一个或多个支付。我希望得到所有的奖金。
以上代码的结果在
之下0
0
0
0
0
0
应该是每个地点的支出金额的总和。好像我没有得到任何支付记录。但是,当我尝试使用下面的代码时(测试我是否收到付款);
var payoutsPerLocation = locations.FirstOrDefault().Payouts;
foreach (var payout in payoutsPerLocation)
{
Console.WriteLine(payout.Amout);
}
该位置有一个奖金。你们认为我在这里做错了什么?
感谢任何帮助。
答案 0 :(得分:0)
我不知道为什么它会给你零,但你不应该在foreach循环中评估Linq表达式。它导致过多的数据库往返。试试这个:
var sumPerLocation = locations.Select(l => l.Payouts.Sum(p => p.Amount));
foreach (var sum in sumPerLocation)
{
Console.WriteLine(sum);
}