0

Linq select ステートメントについて質問があります。私はLinqが初めてなので、どんな助けもとても役に立ちます。私は多くの調査を行いましたが、それでも正しいLinqステートメントを書き留めることができませんでした.

私はこの2つのテーブルと属性を持っています:

Table Titles(title_id(PK), title) and
Table Sales(title_id(PK), qty)

ここで、title_idおよび タイトル文字列の値であり、qty は数量を表す数値です。

この 2 つのテーブルから最も売れている 5 つのタイトルを選択する select を作成する必要があります。
したがって、qty から合計を作成し (同じ属性を持つ複数のレコードを作成できSales.title_idます)、group by を作成し、降順でtitle_id並べ替えてsum(qty)から、属性 title および を返す必要がありますtitle_id

私の質問に適した解決策を作成するにはどうすればよいですか?

よろしく、 ダハッカ

4

2 に答える 2

1

テーブルのグループ結合を行うことができますtitle_id(各グループgは、結合されたタイトルのすべての売上を表します)。次に、タイトルの説明とそのタイトルの売上合計を選択します。合計で結果を並べ替え、タイトルを選択し、必要な数のトップ セールス タイトルを取得します。

var query = (from t in db.Titles
             join s in db.Sales on t.title_id equals s.title_id into g
             select new { Title = t.title, Total = g.Sum(x => x.qty) } into ts
             orderby ts.Total descending
             select ts.Title).Take(5);

結果の SQL は次のようになります。

SELECT TOP (5) [t2].[title] AS [Title], [t2].[value] AS [Total]
FROM (
    SELECT [t0].[title_id], (
        SELECT SUM([t1].[qty])
        FROM [Sales] AS [t1]
        WHERE [t0].[title_id] = [t1].[title_id]
        ) AS [value]
    FROM [Titles] AS [t0]
    ) AS [t2]
ORDER BY [t2].[value] DESC
于 2013-01-02T14:24:28.117 に答える
0

以下は、メソッド構文のlinqクエリです

    sales.GroupBy(s=>s.title_id)
    .Select ( x =>  
       new {
           Title_id = x.Key, 
            Sales= x.Sum (x=> x.qty)
        })
    .OrderByDescending(x=>x.Sales).Take(5)
        .Join( titles, 
            sale=>sale.Title_id,
            title=> title.title_id, 
            (sale, title)=> new 
                {
                  Title = title.Title, 
                  TotalSales=sale.Sales
                }
            );
于 2013-01-02T14:14:07.063 に答える