我有一个复杂的' 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查询,以便能够过滤这些最后的文件名。
谢谢
答案 0 :(得分:0)
首先最好在查询结束时使用 orderby ,因为排序可以更快地处理较小的数据集。
第二您应该在查询顶部使用 where ,它会在分组和排序之前缩小您的设置(在之后设置线)
最后 分组使用键 = new { x.OrderNo, x.Color }
(在此键中)和值 = IEnumerable ,然后 groupedByColorCode 成为 {Key,Value} 的 IEnumerabler 。所以它应该在 orederby
答案 1 :(得分:0)
如果您需要某个标准的最大值或最小值,则有MaxBy()或MinBy()