1. 程式人生 > >C#如何對List中的Object進行排序

C#如何對List中的Object進行排序

過多 code same ascend 多個 delegate del object compareto

首先定義一個List類,這個類裏面包含了Name和Total兩個屬性變量,下面就是針對這兩個變量進行排序。

public class Player
{
    public string Name { get; set; }
    public int Total { get; set; }

    public Player(string name, int total)
    {
        Name = name;
        Total = total;
    }
}

然後我們創建一個List,這個List是Player對象的一個List集,創建好List後,需要為List添加一些節點,下面添加了6條數據。

List<Player> lst = new List<player>();
lst.Add(new Player("John", 100));
lst.Add(new Player("Smith", 120));
lst.Add(new Player("Cait", 97));
lst.Add(new Player("Irene", 100));
lst.Add(new Player("Ben", 100)); 
lst.Add(new Player("Deniel", 88));

我們通過List.Sort() 方法來進行排序
1:通過Total變量來進行升序排序

lst.Sort(delegate
(Player x, Player y) { return x.Total.CompareTo(y.Total); });

2:通過Total進行降序排序

lst.Sort(delegate(Player x, Player y)
{
    return y.Total.CompareTo(x.Total);
});

3:通過多個元素進行排序

lst.Sort(delegate(Player x, Player y)
{
    // Sort by total in descending order
    int a = y.Total.CompareTo(x.Total);

    
// Both player has the same total. // Sort by name in ascending order if (a == 0) a = x.Name.CompareTo(y.Name); return a; });

4:通過Linq進行排序

var result1 = lst.OrderBy(a => a.Total);

var result3 = lst.OrderBy(a => a.Total).ThenBy(a => a.Name);

var result2 = lst.OrderByDescending(a => a.Total).ThenByDescending(a => a.Name);

C#如何對List中的Object進行排序