2016-05-23 80 views
0

我需要在linq中使用Max方法,但如果最大字段值爲空,我需要顯示0代替。我到目前爲止這樣的代碼:如何設置爲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")), 
}; 

回答

2

您可以用可空INT使用GetValueOrDefault默認值爲0.(假設你只有正值)。如果他們都沒有任何價值,答案是0。像這樣的事情

Max_answering_delay = g.Max(b => b.Field<int?>("Max_answering_delay").GetValueOrDefault(0)) 
+0

謝謝!像魅力一樣工作! –

+0

@sammybenmenahem不客氣。請問,請將其標記爲答案?謝謝 – bbeda

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(), 
+0

謝謝阿圖羅,雖然我沒有試過你的答案,但由bbdea的第一個答案很好! 。謝謝 ! –

相關問題