要详细说明我在这里要问的内容,我正在使用C#尝试订购数据库中的数据列表。某个对象(表)有两个独立的属性(列),可以保存日期。我想根据日期对这个列表进行排序,这意味着每个数据行,我想取两个日期的最大值并将其用于排序。
有优雅的方法吗?目前我认为我应该从每条记录中获取最大时间,并将其存储为字典中的键,数据行为值,然后使用排序键迭代字典。虽然这对代码来说并不可怕,但我试图看看是否有更好的方法来使用Linq。任何帮助,将不胜感激。感谢。
答案 0 :(得分:1)
如果您想要每次都对集合进行排序,.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查询不适用于大型集合。