2012-12-03 37 views
0

因此,我試圖獲得城市名單和每個城市最暢銷產品的名稱。有3張桌子,我似乎無法正確分組並得到點數。LINQ查詢使用3個表得到分組數據

這是我到目前爲止有:

var result9 = (from p in shop.Tb_Purchases 
       join c in shop.Tb_PreferredCustomer on p.Cust_ID equals c.Cust_ID 
       join ap in shop.Tb_AvailableProduct on p.Prod_ID equals ap.Prod_ID 
       group ap by new { c.City, ap.Name } into g 
       select new { City = g.Key.City, Name = g.Key.Name, NumOf = g.Count() }).ToList(); 

,這讓我在每個城市銷售的每一件產品,有多少人被賣了,但我只需要一個城市,所賣的一種產品其中最重要的。

+0

你可以加入你的類與導航屬性? –

回答

0

一個解決方案是按城市分組,然後在子查詢中找到每個城市的最佳產品。

var result9 = (from p in shop.Tb_Purchases 
       join c in shop.Tb_PreferredCustomer on p.Cust_ID equals c.Cust_ID 
       join ap in shop.Tb_AvailableProduct on p.Prod_ID equals ap.Prod_ID 
       group ap by c.City into g 
       let largestProductGroup = g.GroupBy(x => x.Name) 
              .OrderByDescending(x => x.Count()) 
              .First() 
       select new 
         { 
         City = g.Key.City, 
         Name = largestProductGroup.Key.Name, 
         NumOf = largestProductGroup.Count() 
         }).ToList();