0

そこで、都市のリストと各都市で最も売れている製品の名前を取得しようとしています。テーブルが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();

これにより、各都市で販売されたすべての製品とその販売数がわかりますが、必要なのは1つの都市とその中で最も販売された1つの製品だけです。

4

1 に答える 1

0

1 つの解決策は、都市だけでグループ化し、サブクエリで各都市の最高の製品を見つけることです。

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();
于 2012-12-03T02:24:09.493 に答える