如何在linq查询中添加十进制值

时间:2012-11-09 09:15:19

标签: c# linq

我的表中有七个十进制字段。我希望所有价值总和。

如果我像val = (i.val1 + i.val2 + ... i.val7)那样正常添加,只有当所有字段都不为空时才会获取值,如果这些字段中的任何一个值显示为null。

你能告诉我怎么做吗?

var query = dbContext.weekly_details
    .Select(i => new
    {
        total_Prj_project_time_entry_day = i.time_entry_day_1 +
            i.time_entry_day_2 +
            i.time_entry_day_3 +
            i.time_entry_day_4 +
            i.time_entry_day_5 +
            i.time_entry_day_6 +
            i.time_entry_day_7
    })
    .ToArray();

3 个答案:

答案 0 :(得分:0)

using System.Linq;

var i = new List<int?>
{
    1,
    null,
    3
}

var total = i.Sum();

答案 1 :(得分:0)

尝试

val = (new decimal?[]{i.val1, i.val2, i.val3, i.val4, i.val5, i.val6, i.val7}).Sum()

完整代码

 var query = dbContext.weekly_details.Select
                  (i => (new decimal?[]{
    i.time_entry_day_1,                                                                  
    i.time_entry_day_2,                                                                               
    i.time_entry_day_3,
    i.time_entry_day_4,                                                                               
    i.time_entry_day_5,                                                                               
    i.time_entry_day_6,
    i.time_entry_day_7}).Sum()).ToArray();

答案 2 :(得分:0)

我想你可以做到

var query = dbContext.weekly_details
    .Select(i => new
    {
        total_Prj_project_time_entry_day = 
            i.time_entry_day_1 ?? 0 +
            i.time_entry_day_2 ?? 0 +
            i.time_entry_day_3 ?? 0 +
            i.time_entry_day_4 ?? 0 +
            i.time_entry_day_5 ?? 0 +
            i.time_entry_day_6 ?? 0 +
            i.time_entry_day_7 ?? 0
    })
    .ToArray();

如果任何time_entry_day_n的值为null,则会向总数中添加0。