C#List <>订单包含3个属性.Net 2.0

7 .net c# sorting .net-2.0

假设我有一个Person类,其中包含Name,Age,Level属性.

我知道如何通过其中一个属性订购

        PersonList.Sort(delegate(Person p1, Person p2) {
            return p1.Name.CompareTo(p2.Name);
        });
Run Code Online (Sandbox Code Playgroud)

但我如何按姓名,年龄和级别订购.

sql语句的等价物:ORDER BY Name,Age,Level

谢谢

Joe*_*orn 28

调整您当前的代码:

PersonList.Sort(delegate(Person p1, Person p2) {
        int r = p1.Name.CompareTo(p2.Name);
        if (r == 0) r = p1.Age.CompareTo(p2.Age);
        if (r == 0) r = p1.Level.CompareTo(p2.Level);
        return r;
    });
Run Code Online (Sandbox Code Playgroud)

或者,一个简单的linq-ish解决方案:

PersonList = PersonList.OrderBy(p => p.Name)
                       .ThenBy(p => p.Age)
                       .ThenBy(p => p.Level).ToList();
Run Code Online (Sandbox Code Playgroud)