0

私はList<T>

Tのintプロパティの1つで昇順にソートするにはどうすればよいですか?

これに対して手動で独自のメソッドを作成できることは承知していますが、これを簡潔に行う方法はありますかList<T>.Sort(T の int プロパティによる); ?

4

6 に答える 6

6

Enumerable Orderby を使用して、そのプロパティで並べ替えることができます。

List<yourType> yourCollection = YourSourceList.OrderBy(e=>e.YourProperty).ToList();
于 2013-05-07T11:13:37.683 に答える
5

はい、使用できますList<T>.Sort

list.Sort((t1, t2) => t1.IntProperty.CompareTo(t2.IntProperty));

効率は劣りますが読みやすいアプローチは、以下を使用することEnumerable.OrderByです。

list = list.OrderBy(t => t.IntProperty).ToList();
于 2013-05-07T11:14:01.797 に答える
2

これを試して:

 List<T> lst=List<T>.OrderBy(x => x.Property).ToList();
于 2013-05-07T11:15:12.370 に答える
0

回答として受け入れられたラムダ式アプローチを使用する権限がない人は、以下のアプローチに従うことができます。核となるアイデアは、IComparable<Person>オブジェクト内で定義された特定のプロパティ/フィールドをチェックすることによって実装することです。ここではそれが ' Person' です。

public class ConsoleApp
    {
        private static void Main(string[] args)
        {
            List<Person> p = new List<Person>();
            p.Add(new Person() {Age = 25, Name = "Jo"});
            p.Add(new Person() {Age = 10, Name = "Jo"});
            p.Add(new Person() {Age = 2, Name = "Jo"});
            p.Sort();

        }
    }

    public class Person : IComparable<Person>
    {
        public string Name { get; set; }
        public int Age { get; set; }

        public int CompareTo(Person other)
        {
            return other == null ? 1 : Age.CompareTo(other.Age);
        }
    }
于 2013-05-07T11:44:23.590 に答える
0

ASC/DESC を並べ替えるには、このコードをリストに追加してみてください

 List<HRDocumentCheckList> ser=new List<HRDocumentCheckList>();
 ser.OrderByDescending(q => q.Document.Id).ToList();

それがあなたを助けることを願っています

于 2013-05-07T11:16:16.260 に答える