16

私はデータ構造を持っています

ここに画像の説明を入力

各アイテムには、特定の日付における各通貨での価格の記録があります。各通貨の最新の価格を返すクエリを作成する必要があります。

このクエリは機能しますがAmounts、 currency ID に対して複数を返します17,8 and 9このアイテムのすべての通貨で最新の価格を表すため、3 つのレコードのみを返す必要があります。

var q = (from c in db.tblStoreItemPrices where c.ItemID == ID select new { c.CurrencyID, c.Amount });

すべての順序を無視して、レコードがランダムに並べられていると想定してください。

4

1 に答える 1

44

これはうまくいくはずです:

db.tblStoreItemPrices
    .Where(c => c.ItemID == ID)
    .GroupBy(c => c.CurrencyID)
    .Select(g => g.OrderByDescending(c => c.Date).First())
    .Select(c => new { c.CurrencyID, c.Amount });

説明:

  1. 特定の ItemID の行を選択します
  2. CurrencyID でグループ化
  3. 各通貨グループ内から、最新の日付を持つ行を選択します (結果セットの各 CurrencyID に対して 1 つの行を残します)。
  4. これらの行から必要な情報を引き出す
于 2012-04-05T10:35:32.493 に答える