Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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中执行Group By,但只返回';最近的';项目(每组)?_C#_.net_Linq_Linq To Objects - Fatal编程技术网

C# 是否可以在LINQ中执行Group By,但只返回';最近的';项目(每组)?

C# 是否可以在LINQ中执行Group By,但只返回';最近的';项目(每组)?,c#,.net,linq,linq-to-objects,C#,.net,Linq,Linq To Objects,我正在尝试返回.NET LINQ中每个组的最新项目 它让我想起了在Sql中做一个分区,我们对每个分区进行分区,并按最近的(每个分区)排序,得到每个分区的前1名 到目前为止,我已经得到了linq代码的开始 from p in products group p by new {p.Provider.ProductId, p.Provider.Name} into g 但是我不知道如何通过p.CreatedOn desc添加订单,然后只获取。每个分区/组取(1)。类似于(附加在查询末尾): 我们应该

我正在尝试返回.NET LINQ中每个组的最新项目

它让我想起了在Sql中做一个
分区
,我们对每个分区进行分区,并按最近的(每个分区)排序,得到每个分区的前1名

到目前为止,我已经得到了linq代码的开始

from p in products
group p by new {p.Provider.ProductId, p.Provider.Name} into g
但是我不知道如何通过p.CreatedOn desc添加
订单,然后只获取
。每个分区/组取(1)

类似于(附加在查询末尾):

我们应该做好这项工作;或者更方便地说:

select new {
    g.Key.ProductId,
    g.Key.Name,
    Product = g.OrderByDescending(x => x.CreatedOn).First()
}
或者,如果您不需要显式地使用密钥(因为它在该项下仍然可用),则只需:

select g.OrderByDescending(x => x.CreatedOn).First()

基本上,每个
g
都是一个
i分组
(对于一些匿名
T
),这意味着每个
g
都有一个
.Key
属性,即您的组,每个
g
都是原始元素的
IEnumerable
序列(可能是
产品
)。

选择g.OrderByDescending(x=>x.CreatedOn).First()
?或FirstOrDefault()会更好吗?不,天哪…/me跑去试试…@Alicia如果没有任何项目,首先就不会有一个组,所以
OrDefault
将是多余的
select g.OrderByDescending(x => x.CreatedOn).First()