如何使用C#对2D点列表进行排序?

Rek*_*kha 1 c#

根据X然后Y按降序对点列表进行排序.

Mar*_*ell 10

list.Sort((a,b)=>{
    int result = a.X.CompareTo(b.X);
    if(result==0) result = a.Y.CompareTo(b.Y);
    return result;
});
Run Code Online (Sandbox Code Playgroud)


Las*_*olt 6

另一种方式来马克Gravell's答案(这将排序列表本身),你得到一个IEnumerable<T>可以做一个清单,.ToList()是LINQ语法:

var ordered = from v in yourList
              orderby v.X, v.Y
              select v;

var orderedList = ordered.ToList();
Run Code Online (Sandbox Code Playgroud)

但是,除非你不想竟排序列表本身或者你只需要,让我们说的IEnumerable,List.Sort效果会更好.

  • 我相信`List.Sort`将会更有效但我不确定无论如何它都无关紧要:)然而,应该注意的是,这两种解决方案在语义上并不相同(即使是` yourList =*查询withList*.ToList()`)因为其他人可以引用旧列表. (2认同)