簡體   English   中英

Linq 至 select 最新記錄

[英]Linq to select latest records

我有數據結構

在此處輸入圖像描述

對於每件商品,都有其在特定日期以每種貨幣表示的價格記錄。 我需要創建一個查詢來返回每種貨幣的最新價格。

此查詢有效,但返回貨幣 ID 1的多個Amounts 它應該只返回 3 條記錄, 7,8 and 9 ,因為這些代表該項目所有貨幣的最新價格。

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

請忽略所有排序並假設記錄是隨機排序的。

這應該工作:

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 的 Select 行
  2. 按 CurrencyID 分組
  3. 來自每個貨幣組 select 具有最新日期的行(為結果集中的每個 CurrencyID 保留一行)
  4. 從這些行中拉出你想要的信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM