1

我正在将我的应用程序从 .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 表达式的选项,我可以使用 generic 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
4

1 回答 1

4

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

你必须使用

using System.Linq;

让它发挥作用

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

于 2013-01-25T14:13:39.297 回答