2

これを行う方法がわかりません。これらの2つの質問はうまくいきません。1つはデリゲートと比較器を使用できないと言い、もう1つはラムダをデリゲートに変換できないと言います。

ジェネリックリストの並べ替え

汎用リストを並べ替えるにはどうすればよいですか?

私はのを持っていGenericList<T>ますScheduleItem。各アイテムには、であるPaymentDateプロパティがありDateTime?ます。

基本的に、このリストをそのプロパティで並べ替えたいと思います(古い->最新)。これを行う最も簡単な方法は何ですか?

最初に私はこれを試しました:

transaction.ScheduleCollection.Sort(delegate(ScheduleItem p1, ScheduleItem p2)
                {
                    return p1.PaymentDate.CompareTo(p2.PaymentDate);
                });

そして、私はこれらの2つのエラーを受け取ります:

デリゲート型ではないため、匿名メソッドを型'System.Collections.IComparer'に変換できません

「System.Nullable」には「CompareTo」の定義が含まれておらず、「System.Nullable」タイプの最初の引数を受け入れる拡張メソッド「CompareTo」が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

そして私が試したもう1つはこれでした:

transaction.ScheduleCollection.Sort((lhs, rhs) => (lhs.PaymentDate.CompareTo(rhs.PaymentDate)));

取得します

デリゲート型ではないため、匿名メソッドを型'System.Collections.IComparer'に変換できません

public void Sort(IComparer comparer);

それが私が使用しなければならないソート方法です。

4

2 に答える 2

8

LINQの使用について考えたことはありますか?

何かのようなもの: var list = list.OrderBy(x => x.PaymentDate).ToList();

于 2012-04-16T18:38:10.047 に答える
3

LINQラムダ関数を使用します。

var OrderScheduleItem = ScheduleItems.OrderBy(p => p.PaymentDate);
于 2012-04-16T18:39:02.670 に答える