2016-10-19 2 views
-1

Ich habe eine Liste, und ich versuche, durch die Verwendung der Gruppe durch. Unten ist die LINQ-Abfrage:linq groupby count gibt null zurück, wenn keine Datensätze gefunden wurden. Aber ich möchte leere Liste

var data = from i in table 
      where i.Date != null 
      group i by new { 
       LineOfBusiness = i.LOB != null ? i.LOB.ReferenceName : string.Empty, 
       COE = i.COE != null ? i.COE.ReferenceName : string.Empty } 
       into g 
       select new 
       { 
       LineOfBusiness = g.Key.LineOfBusiness, 
       COE = g.Key.COE, 
       MTD = g.Count(a => a.Date >= startDate && a.Date <= endDate), 
       YTD = g.Count(a => a.Date >= YTDStartDate && a.Date <= endDate) 
       }; 

ich unten Ergebnis basierend auf Terminen

LineOfBuiness | COE  | MTD | YTD 
---------------+------------+------+------- 
     A  |  X  | 0 | 0 
     B  |  Y  | 0 | 0 

Wenn es etwas Wert für MTD bin immer ist oder keine Probleme YTD aber Wenn MTD & YTD Null für alle Zeilen, dann möchte ich null Ergebnis. Wie kann ich das bekommen?

Antwort

0

Sie können dies tun:

var data = from i in table 
     where i.Date != null 
     group i by new { 
      LineOfBusiness = I.LOB?.LOB.ReferenceName ?? string.Empty, 
      COE = i.COE?.ReferenceName : string.Empty } 
      into g 
      select new 
      { 
      LineOfBusiness = g.Key.LineOfBusiness, 
      COE = g.Key.COE, 
      MTD = g.Count(a => a.Date >= startDate && a.Date <= endDate), 
      YTD = g.Count(a => a.Date >= YTDStartDate && a.Date <= endDate) 
      }; 

data = data.All(x => x.MTD == 0 && x.YTD == 0) ? null : data; 
Verwandte Themen