0

我的表中有七个十进制字段。我想要所有值的总和。

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

你能告诉我怎么做吗?

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();
4

3 回答 3

0
using System.Linq;

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

var total = i.Sum();
于 2012-11-09T09:25:13.140 回答
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();
于 2012-11-09T09:35:02.983 回答
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因此,如果任何are的值,它将在总数中添加 0 null

于 2012-11-09T10:07:14.957 回答