1

一般的なリストを昇順でソートする必要があります。ここに私の一般的なタイプがあります:

public class ContainerData
{
   private Point pnt;
   private Size size;
   private Double Area;
   private Contour<Point> contour;

   public ContainerData()
   { }

   public ContainerData(ContainerData containerData)
   { 
     this.pnt=containerData.pnt;
     this.size=containerData.size;
     this.Area=containerData.Area;
     this.contour = containerData.contour;
   }

   public Point pointProperty
   {
       get
       {return pnt;}
       set
       {pnt = value;}
   }

   public Size sizeProperty
   {
       get
       {return size;}
       set
       {size = value;}
   }

   public Double AreaProperty
   {
       get
       {return Area;}
       set
       {Area = value;}
   }
   public Contour<Point> ContourProperty
   {
       get
       {return contour;}
       set
       { contour = value; }
   }
}

Point 型の X 座標の値で昇順ソートを行う必要があります。

ソートする必要があるクラス メンバーは次のとおりです。

 private List<ContainerData> dataOfPreviusImage;

どうすれば実装できますか?

前もって感謝します。

4

3 に答える 3

9

使用Enumerable.OrderBy:

List<ContainerData> dataOfPreviusImage = GetSomeData();
var sorted = dataOfPreviusImage.OrderBy(cd => cd.pointProperty.X);
于 2012-10-11T08:12:23.020 に答える
2

比較機能を作る:

private int SortFunction(ContainerData obj1, ContainerData obj2)
{
    return obj1.pointProperty.X.CompareTo(obj2.pointProperty.X);
}

そして、次のように呼び出します。

dataOfPreviusImage.Sort(new Comparison<ContainerData>(SortFunction));
于 2012-10-11T08:13:23.873 に答える
1

途中で役立つように、ContainerData クラスは IComparable を実装し、理想的には IEquateable も実装する必要があります。

于 2012-10-11T08:15:50.070 に答える