C#List <>按x然后按y排序
类似于List <>
OrderBy按字母顺序Order,我们要按一个元素排序,然后再按另一个元素排序。我们想要达到以下功能
SELECT * from Table ORDER BY x, y
我们有一个包含许多排序功能的类,并且按一个元素排序没有问题。
例如:
public class MyClass { public int x;
public int y;
}
List<MyClass> MyList;
public void SortList() {
MyList.Sort( MySortingFunction );
}
我们在列表中有以下内容:
Unsorted Sorted(x) Desired--------- --------- ---------
ID x y ID x y ID x y
[0] 0 1 [2] 0 2 [0] 0 1
[1] 1 1 [0] 0 1 [2] 0 2
[2] 0 2 [1] 1 1 [1] 1 1
[3] 1 2 [3] 1 2 [3] 1 2
稳定的排序将是可取的,但不是必需的。欢迎使用适用于.Net 2.0的解决方案。
回答:
请记住,如果比较所有成员,则不需要稳定的排序。根据要求,2.0解决方案可以如下所示:
public void SortList() { MyList.Sort(delegate(MyClass a, MyClass b)
{
int xdiff = a.x.CompareTo(b.x);
if (xdiff != 0) return xdiff;
else return a.y.CompareTo(b.y);
});
}
请注意,此2.0解决方案仍然比流行的3.5
Linq解决方案更可取,它执行就地排序并且不具有Linq方法的O(n)存储要求。除非您当然希望原始的List对象保持不变。
以上是 C#List <>按x然后按y排序 的全部内容, 来源链接: utcz.com/qa/409222.html