我有以下列(属性):日期,名称,时间。
数据类型: DateTime Date; string Name; TimeSpan Time;
我需要根据这三个属性应用自定义排序。我当前的代码看起来像这样:
var sortedData = data.OrderBy(x => x.Date)
.ThenBy(x => x.Name)
.ThenBy(x => x.Date.TimeOfDay);
这个解决方案的问题在于它造成了巨大的混乱。日期现在是混合顺序,也是名称。只有时间按其应该排序,因为它是最后一个正在排序的属性。
我想要达到的目的是:
规则1:首先,所有行按Date
列排序(升序)
规则2:只有当下一行Name
列相等时,才按Date
列排序
规则3:然后,只有当下一行Time
相等且下一行Date
以相同的字母或其位置开头时,才按Name
列排序在字母表中较小。
主要思想不是打破已排序的列。我怎么能实现这个解决方案?
答案 0 :(得分:1)
我的建议是你要按日期排序(没有时间),然后按名称排序,然后按一天中的时间排序。请尝试以下代码:
var sortedData = data.OrderBy(x => x.Date.Date)
.ThenBy(x => x.Name)
.ThenBy(x => x.Date.TimeOfDay);