C#Linq-按照两列之间的最大值对数据集进行排序的优雅方式

本文关键字:数据集 排序 方式 最大值 C#Linq- 之间 两列 | 更新日期: 2023-09-27 18:27:40

为了详细说明我在这里的要求,我正在C#中工作,试图对来自数据库的数据列表进行排序。某个对象(表)有两个单独的属性(列),可以包含日期。我想根据日期对这个列表进行排序,这意味着对于每个数据行,我想取两个日期中的最大值并使用它进行排序。

有没有一种优雅的方法可以做到这一点?目前我在想,我应该从每个记录中获得最长时间,并将其作为一个键存储在Dictionary中,数据行是值,然后用排序的键迭代Dictionary。虽然这对代码来说并不可怕,但我正在尝试使用Linq是否有更好的方法来实现这一点。如有任何帮助,我们将不胜感激。谢谢

C#Linq-按照两列之间的最大值对数据集进行排序的优雅方式

如果您每次都想要一个用于排序集合的替代方法,.NET包含一个名为SortedList的类。以下是MSDN文章的链接:http://msdn.microsoft.com/en-us/library/system.collections.sortedlist(v=vs.110).aspx

MSDN声明SortedList:

表示按键排序、可按键和索引访问的键/值对的集合。

因此,如果你想按日期排序,你可以将你的排序列表声明为:

SortedList<DateTime, YourData> mySortedList = new SortedList<DateTime, YourData>();

当你给它添加值时,它已经被排序了。或者你可以直接用LINQ和@Alexander回答。

编辑

我刚刚明白你想做什么。你可以做:

table.OrderBy(item => Math.Max(item.Date1.Ticks, item.Date2.Ticks));

注意:上面的linq查询不会在大型集合上执行。