Lambda用于简化速记

时间:2011-12-24 20:33:29

标签: c# linq lambda

我有以下LINQ查询:

var q = from bal in data.balanceDetails
        where bal.userName == userName && bal.AccountID == accountNumber
        select new
        {
            date = bal.month + "/" + bal.year,
            commission = bal.commission,
            rebate = bal.rebateBeforeService,
            income = bal.commission - bal.rebateBeforeService
        };

我记得看过lambda简写,用于汇总commission每一行的q字段。 总结这个最好的方法是什么?除了手动循环结果?

1 个答案:

答案 0 :(得分:9)

这很简单 - 无需在代码中循环:

var totalCommission = q.Sum(result => result.commission);

请注意,如果您要将q的结果用于各种不同的计算(这似乎是一个合理的假设,就好像您只想要总佣金一样,我怀疑您是否会选择其他位)可能想要实现查询一次,这样就不需要多次进行所有过滤和预测。这样做的一种方法是使用:

var results = q.ToList();

这将为您的匿名类型创建List<T> - 您仍然可以在Sum上使用上面的results代码。