0

EntityFramework Kern verwenden, lassen Sie uns sagen, ich habe drei Tabellen:EntityFramework Sum/Gruppen Syntax für verknüpfte Tabellen

Stores 
------ 
StoreId int, 
StoreType int, 
StoreName varchar(max) 

Orders 
------ 
OrderId int, 
StoreId int, 
TotalCost int, 
PaymentType int 

OrderItem 
--------- 
ItemId int, 
OrderId int, 
ItemCost int 

Und lassen Sie uns sagen, dass ich ausgegeben werden soll mit den folgenden Spalten:

StoreName 
SumOfTotalWhere(OrderType==1) 
SumOfTotalWhere(OrderType==2) 
SumOfAllOrders 
TotalNumOfOrdersForStore 
NumberOfAllOrders 

Gibt es eine Möglichkeit, EntityFramework Sum/Group-Mechanismen zu verwenden, um diese Ausgabe ohne eine Tonne Roundtrips zu erreichen? Ich konnte die Syntax nicht berechnen.

Antwort

0
var answer = (from store in db.stores 
      join order in db.orders on store.StoreId equals order.StoreId into subs 
      from sub in subs.DefaultIfEmpty() 
      group sub by new {store.StoreId, store.StoreName } into gr 
      select new 
      { 
       StoreName = gr.Key.StoreName 
       SumOfTotalWhere1 = gr.Where(x => x != null && x.PaymentType == 1).Select(x => x.TotalCost).DefaultIfEmpty().Sum() 
       SumOfTotalWhere2 = gr.Where(x => x != null && x.PaymentType == 2).Select(x => x.TotalCost).DefaultIfEmpty().Sum() 
       SumOfAllOrders = gr.Where(x => x != null).Select(x => x.TotalCost).DefaultIfEmpty().Sum(), 
       TotalNumOfOrdersForStore = gr.Count(x => x != null) 
       NumberOfAllOrders = db.orders.Count() 
      }).ToList(); 
Verwandte Themen