C#中关于List 类的排序


使用背景

在机器视觉项目中,要对一组视觉坐标(x,y)经行排序,如N点标定的时候。如下图:


圆点标定

我们需要对图是黑色圆点的中心坐标进行:先按x升序排序,再按y经行降序排序。经过两轮排序后,我们将会得到一组有序的坐标点集。

如何使用

关键代码如下:

class VistionPosition

    {

        public VistionPosition(double _x, double _y)

        {

            x = _x;

            y = _y;

        }

        public double x { get; set; }

        public double y { get; set; }

    }

List lst = new List();

lst.Sort((a,b)=>a.y.CompareTo(b.y));//对lst进行y升序的排序,关键的表达式(a,b)

for (int i = 0; i < 3; i++)

            {

                for (int j = 0; j < 3; j++)

                {

                    var temp = lst.Take(3).OrderBy(a=>a.x).ToList();//返回前三个元素,按y

                    lst = lst.Skip(3).ToList();

                    resultList.AddRange(temp);

                }

            }


总结

该排序算法可以用于激光标定中的N点标定,可以做到一键标定。

你可能感兴趣的:(C#中关于List 类的排序)