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 &lt;&gt;按x然后按y排序 的全部内容, 来源链接: utcz.com/qa/409222.html

回到顶部