2016-05-23 3 views
0

Ich brauche Max Methode in linq, aber wenn max Feldwert leer ist, muss ich stattdessen 0 zeigen. Ich habe diesen Code so weit:Wie auf Wert auf 0 gesetzt werden, wenn das maximale Feld leer ist

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")), 

... hier muss ich auf 0 max und gesetzt, wenn max nicht gefunden wird:

Max_answering_delay = g.Max(b => b.Field<int?>("Max_answering_delay")), 
Max_abandoning_delay= g.Max(b => b.Field<int?>("Max_abandoning_delay")), 
}; 

Antwort

2

Sie GetValueOrDefault auf dem Nullable-int mit einem verwenden können Standard von 0. (vorausgesetzt, Sie haben nur positive Werte). Wenn keiner von ihnen irgendeinen Wert hat, wird die Antwort 0. So etwas wie dieses

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

Dank ! Funktioniert wie Charme! –

+0

@sammybenmenahem Gern geschehen. Könnten Sie es bitte als Antwort markieren? Danke – bbeda

0

Sie DefaultIfEmpty eine zählbare enthält standardmäßig zu bekommen verwenden können (0) Wert, wenn g leer ist:

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

Danke Arturo, obwohl ich deine Antwort nicht versucht habe, aber die erste Antwort von bbdea Funktioniert super! . Vielen Dank ! –

Verwandte Themen