根据X然后是Y,按降序对点列表进行排序。
答案 0 :(得分:10)
list.Sort((a,b)=>{
int result = a.X.CompareTo(b.X);
if(result==0) result = a.Y.CompareTo(b.Y);
return result;
});
答案 1 :(得分:6)
Marc Gravell的答案(将对列表本身进行排序)的另一种方法是获取IEnumerable<T>
,其中.ToList()
可以成为var ordered = from v in yourList
orderby v.X, v.Y
select v;
var orderedList = ordered.ToList();
的列表,这是LINQ语法:
IEnumerable
但除非您不想对列表本身进行实际排序,否则您只需要List.Sort
,{{1}}会更好。
答案 2 :(得分:1)
List<Point> sortedList = MyList.Sort(
delegate(Point p1, Point p2)
{
int r = p1.x.CompareTo(p2.x);
if(r.Equals(0)) return p1.y.CompareTo(p2.y);
else return r;
}
);
答案 3 :(得分:0)
如果评论者确实是正确的,并且您正在寻找解决家庭作业问题的方法,我怀疑真正的作业是教你如何对整数值进行排序。所以我会帮助你开始。
提示 Point
structure有两个您可能会觉得有用的属性,X
和Y
,它们分别返回这两个轴的坐标值
答案 4 :(得分:0)
有很多方法可以对列表进行排序。
例如,要将列表从最小(x,y)排序到最大,您可以尝试此算法:
(x1 > x2 || (x1 == x2 && y1 > y2))
,则交换它们这是一种效率低下的算法,但它可以完成工作。
要获得更好的算法,请查看http://www.sorting-algorithms.com/