Linq查询过滤最近的值/记录

时间:2016-03-16 09:29:15

标签: c# linq

我有一个复杂的' 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是订单。我也想按文件名过滤。 Filename是来自tblOrder的变量。实际上我想保留并保留最近文件中的订单。

什么'哪里'我应该添加到我的linq查询,以便能够过滤这些最后的文件名。

谢谢

2 个答案:

答案 0 :(得分:0)

首先最好在查询结束时使用 orderby ,因为排序可以更快地处理较小的数据集。

第二您应该在查询顶部使用 where ,它会在分组和排序之前缩小您的设置(在之后设置线)

最后 分组使用 = new { x.OrderNo, x.Color }(在此键中)和值 = IEnumerable ,然后 groupedByColorCode 成为 {Key,Value} IEnumerabler 。所以它应该在 orederby

之前结束

答案 1 :(得分:0)

如果您需要某个标准的最大值或最小值,则有MaxBy()或MinBy()