对列表进行排序<>使用从ListView传递的命令参数

时间:2014-01-15 11:56:25

标签: c# listview sorting

我使用List<>填充了listview对象我已经在SO上阅读了如何使用LINQ对列表进行排序:

List<Order> SortedList = objListOrder.OrderBy(o=>o.OrderDate).ToList();

哪个好,但我的ListView有一堆列,我想使用与上面不同的系统进行排序,但是能够从传递的任何命令参数中获取排序值。

所以,例如上面的代码按OrderDate排序,如果我传入'Name'或'Amount'或其他东西怎么办。没有很长的if-else是否有一个很好的方法可以根据作为sort参数传递的值来改变LINQ查询?

1 个答案:

答案 0 :(得分:1)

您可以OrderBystring的财产var strSort = "Name"; List<Order> SortedList = objListOrder.OrderBy(o=>o.GetType().GetProperty(strSort).GetValue(o, null)).ToList(); 进行var strSort = "Name"; var query = objListOrder; if(strSort == "OrderDate") query = query.OrderBy(o=>o.OrderDate); else if(strSort == "Name") query = query.OrderBy(o=>o.Name); else if(strSort == "Amount") query = query.OrderBy(o=>o.Amount); List<Order> SortedList = query.ToList();

{{1}}

但我更愿意将查询分开:

{{1}}
相关问题