2017-06-07 4 views
0

ich zwei Tabellen, die zusammen wie diese miteinander verbunden sind ..GroupBy und Summe Zum Wörterbuch

var query = (from t1 in _db.Table1 join t2 in _db.Table2 on t1.CId equals 
       t2.ID where t1.DateAdded >= fromDate && t1.DateAdded <= toDate select t2) 
      .GroupBy(c => c.Brand) 
      .ToDictionary(t => t.Key, t => t.Count()); 

Das bin ich fast das, was ich will, es die Anzahl der verschiedenen cFormat Zeilen zurück, aber ich möchte es auf t2.Qty statt

zusammengefasst werden, wenn die Daten wie folgt aussehen ...

Brand   Qty 
Volvo   2 
Volvo   1 
Tesla   4 
Tesla   9 

Meine aktuelle Abfrage mich so ein Ergebnis geben ..

Volvo   2 
Tesla   2 

Aber ich möchte es

Volvo   3 
Tesla   13 

Wie kann ich es so zu arbeiten, verändern sein?

Antwort

3

einfach Ihre Count Anruf zu einem Sum Anruf ändern, in der die Eigenschaft, die Sie, wie diese Summe wollen:

var query = (from t1 in _db.Table1 join t2 in _db.Table2 on t1.CId equals 
      t2.ID where t1.DateAdded >= fromDate && t1.DateAdded <= toDate select t2) 
      .GroupBy(c => c.Brand) 
      .ToDictionary(t => t.Key, t => t.Sum(x => x.Qty)); 
+0

Ahh, süß. Vielen Dank! – MTplus

4

Verwenden Sum statt Count:

.ToDictionary(t => t.Key, t => t.Sum(c => c.Qty));