2016-11-28 4 views
1

Ich versuche einige DB-Daten mit der folgenden Anweisung zu gruppieren.Groupby dann Daten mit Lambda/Linq auswählen

var res = from messages in db.Messages 
group messages by messages.Message_Sent_Date into grp 
select new { message_count = grp.Sum(g => g.Message_Count), message_cost = grp.Sum(g => g.Customer_Price) }; 

, die äquivalent ist:

var query = db.Messages.Where(m => m.Message_Sent_Date != null && m.Message_Count != 99) 
         .GroupBy(d => d.Message_Sent_Date) 
         .Select(g => new { 
           message_count = g.Sum(c => c.Message_Count), 
           message_cost = g.Sum(c => c.Customer_Price), 
          }); 

Meine Frage ist, ausgewählt das Objekt 2 Felder nämlich MESSAGE_COUNT und message_cost. Wenn ich ein drittes Feld 'Message_Sent_Date' hinzufügen möchte, das ist im Wesentlichen die Spalte, in der die Daten gruppiert sind. Wie mache ich das?

Antwort

1

Verwenden g.Key, die die Message_Sent_Date für jede Gruppe sein, so das Snippet wird so sein:

// Modified select after the GroupBy clause 
.Select(g => 
     new 
     { 
      message_count = g.Sum(c => c.Message_Count), 
      message_cost = g.Sum(c => c.Customer_Price), 
      Message_Sent_Date= g.Key 
     }); 
+1

ehrfürchtig. Das funktioniert!! – psyoptica

+0

Froh, zu hören und .. glücklich, Ihnen zu helfen ...! –