[英]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.