列表上的自定义 OrderBy
我正在尝试找出自定义列表排序的最佳方法。假设 T 是一个具有 date(DateTime?) 属性和 status(string) 属性的对象。
我有 3 个案例...
“紧急”:我希望这些位于列表的顶部,没有特定的顺序
日期=空
status =“紧急”
“正常”:我希望在紧急情况之后按日期订购这些
日期 = 任何有效日期/时间
status =“准时”
“稍后”:我希望这些位于列表底部,没有特定的顺序
日期=空
状态 =“稍后”
有什么想法吗?我应该使用 IQuerable 对象而不是 List 吗?我始终可以稍后将对象发送到我的视图。
I'm trying to figure out the best way to custom sort a List. Lets say that T is a Object with a date(DateTime?) property and a status(string) property.
I have 3 cases...
"Urgent": I want these at the top of the list, no particular order
date = null
status = "Urgent"
"Normal": I want these ordered by date after the Urgent cases
date = any valid date/time
status = "On Time"
"Later": I want these at the bottom of the list, no particular order
date = null
status = "Later"
Any thoughts? Should I use an IQuerable object instead of List? I can always .ToList() the object later to send to my view.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
随机思考:排序属于查询,还是属于类?
Random musing: Does Ordering belong to the query, or to the class?
应该不会太难,只需让
T
实现IComparable
使用您的比较规则,您应该被设置。Shouldn't be too difficult, just make
T
implementIComparable
using your comparison rules and you should be set.您可以只使用扩展方法:
像这样......
You could just use an extension method:
Something like this...
您需要提供 IComparer 的实现,然后可以使用以下重载传递它:
请参阅:http://msdn.microsoft.com/en-us/library/bb549422.aspx
You will need to provide an implementation of IComparer, and then you can pass it in using the following overload:
See: http://msdn.microsoft.com/en-us/library/bb549422.aspx
我认为最简单的方法是使用 linq :
The easiest way in my opinion is to use linq :