C# 用于筛选最新值/记录的Linq查询
我有一个“复杂”的linq查询,我想改进并理解它C# 用于筛选最新值/记录的Linq查询,c#,linq,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,
(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查询中添加什么“where”子句,以便能够过滤这些最后的文件名
谢谢首先最好在查询结束时使用orderby,因为排序会在较小的数据集上更快地工作 Second您应该在查询顶部使用where,它将在分组和排序之前缩小您的集合(在from行之后设置)
最后分组使用Key=
new{x.OrderNo,x.Color}
(在此Key中)和Value=IEnumerable创建字典,然后groupedByColorCode成为{Key,Value}的IEnumerabler。所以它应该放在orederby之前的末尾如果根据某些标准需要max或min,那么就有MaxBy()或MinBy()对不起,但不清楚最后一个文件名是什么意思。如果您需要最后一条记录,Linq中有LastOrDefault()方法。如果您根据某些条件需要max或min,则有MaxBy()或MinBy()。谢谢。你看我的问题很清楚:——)