假设我有一个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)