如何在C#5中使用Lambda表达式对<t>列表进行排序/排序?</t>

时间:2013-01-25 14:07:17

标签: list sorting .net-4.5 c#-5.0

我正在将我的应用程序从.Net 4.0转换为.Net 4.5 Framework,并且List<>定义发生了变化。 我的旧代码看起来像这样(.Net 4.0):

List<Customer> list = new List<Customer>();
list.Add(new Customer("Smith", "John", "Sydney", 45));    
list.Add(new Customer("Mitchell", "Brad", "New York", 52));
list.Add(new Customer("Baker", "William", "Cape Town", 21)); 
list.OrderBy(x => x.Name);

使用.Net 4.5(C#5)List<T>.OrderBy()方法已经消失,只有List<T>.Sort()可用,但看起来没有可能在这种方法中使用Lambda表达式。

除了为每个IComparer定义<T>之外,还有其他选择吗? 如果没有Lambda表达式的选项,我可以使用通用IComparer,但如何选择要比较的属性?

解决/编辑:

using Linq;
[...]
List<Customer> list = new List<Customer>();
list.Add(new Customer("Smith", "John", "Sydney", 45));    
list.Add(new Customer("Mitchell", "Brad", "New York", 52));
list.Add(new Customer("Baker", "William", "Cape Town", 21)); 
list.OrderBy(x => x.Name); //list stays unordered
list = list.OrderBy(x => x.Name).ToList();  // list content is now ordered

1 个答案:

答案 0 :(得分:4)

List<T>.OrderBy()没有消失,它仍然是一种扩展方法

你必须使用

using System.Linq;

让它发挥作用

在您的代码中,您应该使用“list.OrderBy(x =&gt; x.Name);”