我需要在linq中使用Max
方法,但如果max字段值为空,我需要显示0。到目前为止我有这个代码:
var groupedData =
from b in showit.AsEnumerable()
orderby b.Field<int>("Key")
group b by b.Field<int?>("Key") into g
select new
{
KeyName = g.Key,
date = g.First().Field<string>("date"),
Team = g.First().Field<string>("Team"),
Calls_Chats_Answered = g.Sum(b => b.Field<int?>("Calls_Chats_Answered")),
...这里我需要达到最大值并且如果找不到最大值则设置为0:
Max_answering_delay = g.Max(b => b.Field<int?>("Max_answering_delay")),
Max_abandoning_delay= g.Max(b => b.Field<int?>("Max_abandoning_delay")),
};
答案 0 :(得分:2)
您可以在nullable int上使用GetValueOrDefault,默认值为0.(假设您只有正值)。如果它们都没有任何值,那么答案就是0.像这样的东西
Max_answering_delay = g.Max(b => b.Field<int?>("Max_answering_delay").GetValueOrDefault(0))
答案 1 :(得分:0)
如果DefaultIfEmpty
为空,您可以使用0
获取包含默认(g
)值的可枚举值:
Max_answering_delay = g.Select(b => b.Field<int>("Max_answering_delay")).DefaultIfEmpty().Max(),
Max_abandoning_delay= g.Select(b => b.Field<int>("Max_abandoning_delay")).DefaultIfEmpty().Max(),