我的表中有七个十进制字段。我希望所有价值总和。
如果我像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();
答案 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。