1

こんにちは、2 つの整数を含むオブジェクトのリストがあります。このリストを次のように並べ替えたいと思います。

public class ListClass
{
    public int rowIndex { get; set; }
    public int columnIndex { get; set; }
    public ListClass()
    {
    }

    public ListClass(int row, int column)
    {
        this.rowIndex = row;
        this.columnIndex = column;
    }
}

public static void main()
{
    List<ListClass> listClassList = new List<ListClass>();
    listClassList.Add(new ListClass(0,1));
    listClassList.Add(new ListClass(0,3));
    listClassList.Add(new ListClass(0,2));
    listClassList.Add(new ListClass(0,8));
    listClassList.Add(new ListClass(1,1));
    listClassList.Add(new ListClass(1,0));
    listClassList.Add(new ListClass(2,1));
    listClassList.Add(new ListClass(3,0));
    listClassList.Add(new ListClass(3,8));
    listClassList.Add(new ListClass(3,3));
    listClassList.Add(new ListClass(3,1));
    listClassList.Sort();
}
public void Sort()
{
    \\Help Here
}


このリストを並べ替えると、次のようになります。 (0,1)
(0,2)
(0,3)
(0,8)
(1,0)
(1,1)
(2,1)
(3,0)
(3,1)
(3,3)
(3,8)

4

2 に答える 2

1

次のように IComparable を使用するように ListClass を変更します...

public class ListClass : IComparable<ListClass>
{
    public int rowIndex { get; set; }
    public int columnIndex { get; set; }

    public ListClass(int row, int column)
    {
        this.rowIndex = row;
        this.columnIndex = column;
    }

    public int CompareTo(ListClass other)
    {
        var index = this.rowIndex.CompareTo(other.rowIndex);
        return index == 0 ? this.columnIndex.CompareTo(other.columnIndex) : index;
    } 
}

listClassList.Sort(); の呼び出し リクエストに応じてリストをソートします。

詳細については、 IComparableを参照してください。

于 2012-08-03T10:13:44.177 に答える
0

A simple LINQ can do!!

List<ListClass> lstSorted = (from element in listClassList
                             orderby element.rowIndex, element.columnIndex
                             select element).ToList();
于 2012-08-03T11:04:09.777 に答える