.SELECT语句使用lambda和Entity Framework

时间:2013-07-22 06:06:37

标签: c# linq entity-framework select lambda

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

该位置有一个奖金。你们认为我在这里做错了什么?

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

var sumPerLocation = locations.Select(l => l.Payouts.Sum(p => p.Amount));
foreach (var sum in sumPerLocation)
{
    Console.WriteLine(sum);
}