1

アプリケーションを.Net4.0から.Net4.5Frameworkに変換していますが、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式を使用する可能性はないようです。

IComparerfor everyを定義する以外のオプションはあります<T>か?ラムダ式のオプションが本当にない場合は、ジェネリック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 に答える