List <T>上的自定义OrderBy

BZi*_*ink 16 c# linq asp.net asp.net-mvc

我试图找出自定义排序列表的最佳方法.假设T是一个具有日期(DateTime?)属性和状态(字符串)属性的对象.

我有3个案例......

"紧急":我希望这些位于列表的顶部,没有特定的订单
日期= null
status ="Urgent"

"正常":我希望在紧急案件日期之后按日期排序
=任何有效日期/时间
状态="准时"

"稍后":我希望这些在列表的底部,没有特定的订单
日期= null
status ="Later"

有什么想法吗?我应该使用IQuerable对象而不是List吗?我总是可以.ToList()稍后将对象发送到我的视图.

Amy*_*y B 41

query = query.OrderBy(x =>
  x.Status == "Urgent" ? 1:
  x.Status == "Normal" ? 2:
  3)
  .ThenBy(x => 
  x.Status == "Urgent" ? null:
  x.Status == "Normal" ? x.Date:
  null);
Run Code Online (Sandbox Code Playgroud)

随机沉思:Ordering是属于查询还是属于类?


Qui*_*son 12

不应该太困难,只需使用比较规则制作T工具,就IComparable应该设置好.