15

私のコードは次のようになります:

Collection<NameValueCollection> optionInfoCollection = ....
List<NameValueCollection> optionInfoList = new List<NameValueCollection>();
optionInfoList = optionInfoCollection.ToList();

if(_isAlphabeticalSoting)
   Sort optionInfoList

optionInfoList.Sort() を試しましたが、機能しません。

4

4 に答える 4

26

sort メソッドとラムダ式を使用すると、非常に簡単です。

myList.Sort((a, b) => String.Compare(a.Name, b.Name))

上記の例は、名前が文字列型であると仮定して、オブジェクト型の Name プロパティで並べ替える方法を示しています。

于 2009-03-03T05:38:59.213 に答える
8

作業したいだけの場合は、 orをクラスSort()に実装する必要があります。IComparableIComparable<T>

新しいリストを作成してもかまわない場合は、 OrderBy/ ToListLINQ 拡張メソッドを使用できます。より単純な構文で既存のリストを並べ替えたい場合は、いくつかの拡張メソッドを追加して、次を有効にすることができます。

list.Sort(item => item.Name);

例えば:

public static void Sort<TSource, TValue>(
    this List<TSource> source,
    Func<TSource, TValue> selector)
{
    var comparer = Comparer<TValue>.Default;
    source.Sort((x, y) => comparer.Compare(selector(x), selector(y)));
}
public  static void SortDescending<TSource, TValue>(
    this List<TSource> source,
    Func<TSource, TValue> selector)
{
    var comparer = Comparer<TValue>.Default;
    source.Sort((x, y) => comparer.Compare(selector(y), selector(x)));
}
于 2009-03-03T05:43:39.763 に答える
2
public class Person  {
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

List<Person> people = new List<Person>();

people.Sort(
    delegate(Person x, Person y) {
        if (x == null) {
            if (y == null) { return 0; }
            return -1;
        }
        if (y == null) { return 0; }
        return x.FirstName.CompareTo(y.FirstName);
    }
);
于 2011-09-21T19:26:31.430 に答える
1

Sort() にアイテムの配置方法を伝える比較子を設定する必要があります。

これを行う方法の例については、List.Sort メソッド (IComparer)を確認してください...

于 2009-03-03T05:26:38.807 に答える