簡體   English   中英

用於過濾最新值/記錄的 Linq 查詢

[英]Linq query to filter on most recent value / record

我有一個“復雜”的 linq 查詢,我想改進和理解。

(from x in tblOrder
 orderby x.OrderNo  
 // where x.Filename is most recent filename for this order
 group x by new { x.OrderNo, x.Color } into groupedByColorCode
 select new
 {
     OrderNo = groupedByColorCode.Key.OrderNo,
     ProductRef = groupedByColorCode.FirstOrDefault().ProductRef,
     Color = groupedByColorCode.Key.Color,
     Packing = groupedByColorCode.FirstOrDefault().Packing,
     TotalQuantity = groupedByColorCode.Sum(bcc => bcc.OriQty).ToString()
 }

x 是訂單。 我也想按文件名過濾。 文件名是來自 tblOrder 的變量。 實際上,我只想保留並保留最新文件中的訂單。

我應該將什么“where”子句添加到我的 linq 查詢中,以便能夠過濾這些最后的文件名。

謝謝

首先,最好在查詢的末尾使用orderby ,因為在較小的數據集上排序會更快。

其次,您應該使用查詢頂部的where ,它會在分組和排序之前縮小您的集合(在from行之后設置)

最后分組使用Key = new { x.OrderNo, x.Color } (在這個鍵中)和Value = IEnumerable創建字典,然后groupedByColorCode成為{Key, Value} 的IEnumerabler 所以它應該站在orederby之前

如果您需要某些條件的最大值或最小值,則有 MaxBy() 或 MinBy()

暫無
暫無

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

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