4

賢い人がLINQクエリを作成して、最も売れている製品を取得するのを手伝ってくれませんか。エンティティフレームワークモデルに次の2つのテーブル/クラスがあります。

Orders (OrderedItems)
OrderedItem (Product, Qty)

例えば。(これは明らかに機能しません)

Orders.OrderByDescending(o => Sum(o.OrderedItems.Qty))
      .Select(o => o.OrderedItems.Product)
4

4 に答える 4

7

Orders テーブルはまったく必要ありません。注文されたすべてのアイテムに対応する注文があると仮定すると、これを実行できるはずです。

var query =
    (from item in OrderedItem
    group item.Qty by item.Product into g
    orderby g.Sum() descending
    select g.Key).Take(5); // get the top 5 orders
于 2012-11-02T04:41:50.393 に答える
3
class Product {
            public int Id { get; set; }
        }
        class OrderedItem
        {
            public Product Product { get; set; }

            public int Qty { get; set; }
        }

その後:

        List<OrderedItem> orders = new List<OrderedItem>();
        var products = orders.GroupBy(p => p.Product.Id).OrderByDescending(pi => pi.Sum(pii => pii.Qty)).Select(p=>p.Key);
于 2012-11-02T04:41:32.330 に答える
2

Sumの使い方が間違っていると思います。私はこれがあなたが望むものだと思います

Orders.OrderByDescending(o => o.OrderedItems.Sum(oi => oi.Qty))
      .Select(o => o.OrderedItems.Product)
于 2012-11-02T04:39:47.340 に答える