使用LINQ对列进行求和

时间:2017-10-11 17:54:03

标签: c# linq

我正在寻找一种更优雅的方式,使用LINQ来汇总2列。我有以下查询,它的工作正常,但看起来效率低下。

什么是更好的重写方式?

谢谢

TotalLaborHours = db.Timesheet.Where(a => a.Date <= MDate & a.Date.Month == MDate.Month)
                              .Select(a => a.RegularPaidHours).Sum() + 
                  db.Timesheet.Where(a => a.Date <= MDate & a.Date.Month == MDate.Month)
                              .Select(a => a.OvertimeHours).Sum();

2 个答案:

答案 0 :(得分:3)

这不会产生同样的效果吗?

TotalLaborHours = db.Timesheet
    .Where(a => a.Date <= MDate & a.Date.Month == MDate.Month)
    .Select(a => a.RegularPaidHours + a.OvertimeHours).Sum();

答案 1 :(得分:0)

你可以使用一个匿名类型,它是两列的总和,然后总和如下:

TotalLaborHours = db.Timesheet
    .Where(a => a.Date <= MDate & a.Date.Month == MDate.Month)
    .Select(a => new { hrs = a.RegularPaidHours + a.OvertimeHours }).Sum(b => b.hrs);