リストの一部をラムダ式でソートしようとしていますが、そうしようとするとエラーが発生します。
List<int> list = new List<int>();
list.Add(1);
list.Add(3);
list.Add(2);
list.Add(4);
// works fine
list.Sort((i1, i2) => i1.CompareTo(i2) );
// "Cannot convert lambda expression to type 'System.Collections.Generic.IComparer<int>' because it is not a delegate type"
list.Sort(1, 2, (i1, i2) => i1.CompareTo(i2) );
foreach (int i in list)
Console.WriteLine(i);
これは、範囲を取る並べ替え用の System.Comparison オーバーロードがないためであると推測されます。これは何らかの理由で省略されていますか?
ラムダ式から適切な IComparer を取得する簡単な方法はありますか (行くために使用できるクラスlist.Sort(1, 2, new CompareyThing<int>((...) => ...))
など)?