我正在将我的应用程序从.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
答案 0 :(得分:4)
List<T>.OrderBy()
没有消失,它仍然是一种扩展方法
你必须使用
using System.Linq;
让它发挥作用
在您的代码中,您应该使用“list.OrderBy(x =&gt; x.Name);”