Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于筛选最新值/记录的Linq查询_C#_Linq - Fatal编程技术网

C# 用于筛选最新值/记录的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,

我有一个“复杂”的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查询中添加什么“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()。谢谢。你看我的问题很清楚:——)