gpt4 book ai didi

c# - Linq - OrderByDescending 和 Take(1),它会返回最大项目吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:13 33 4
gpt4 key购买 nike

我有这行 C# 代码:

datavals
.GroupBy(x => new { x.ElementID, x.OutputTableCode})
.SelectMany(x => x
.OrderByDescending(y => y.Sequence)
.Take(1))
.ToList<TransactionValue<string>>();

思路是根据ElementIDOutputTableCode对列表中的项进行分组,然后按照降序对每组进行排序,只返回一个每组项目。 (这实际上是在 return 语句中,因此修改后的列表将返回给调用函数。)

我的问题是,这会返回具有最大序列的项目,还是不一定如此?在我的测试示例中,确实如此,但不确定是否有保证。

如果它不一定会返回每个组中具有最大序列的项目,我该如何更改查询来做到这一点?

最佳答案

如果序列为空,它总是返回序列的最大值或空序列。

我们现在不知道序列的顺序是什么,所以如果我们按 desc 排序 - 我们将得到按 desc 排序的序列(最大值 - 第一个,最小值 - 最后一个)。执行.Take(1)等同于执行.FirstOrDefault(),所以我们会得到sequence的最大值。

如果您对 .Take() 有疑问,您始终可以使用 .FirstOrDefault() 或简单地使用 .First() 来检索第一个值顺序。

如果你只想得到最大值,你可以使用linq .Max(),你可以在其中设置比较器属性,例如.Max(x => x.Sequence)

关于c# - Linq - OrderByDescending 和 Take(1),它会返回最大项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33006812/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com