0

我在 using.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);
}

该位置需要支付费用。你们认为我在这里做错了什么?

任何帮助表示赞赏。

4

1 回答 1

0

我不知道为什么它给你零,但无论如何你都不应该在 foreach 循环中评估 Linq 表达式。它会导致对数据库的往返次数过多。尝试这个:

var sumPerLocation = locations.Select(l => l.Payouts.Sum(p => p.Amount));
foreach (var sum in sumPerLocation)
{
    Console.WriteLine(sum);
}
于 2013-07-22T06:13:32.290 回答