0

プロジェクトの途中で、問題に行き詰まっています。

リスト構造はC#でリストをソートする必要があります
public List < double[] > DataList = new List < double[] >();

今、リスト内のdouble配列の最後のインデックスに基づいてこのリストをソートしたい

お気に入り

2|3|5|6|8

2|3|5|6|9

2|3|5|6|5

2|3|5|6|12

出力は次のようになります

2|3|5|6|12

2|3|5|6|9

2|3|5|6|8

2|3|5|6|5

4

3 に答える 3

3

LINQ を使用します。

// reproduce data
List<double[]> DataList = new List<double[]>();
DataList.Add(new double[] { 2, 3, 5, 6, 8 });
DataList.Add(new double[] { 2, 3, 5, 6, 9 });
DataList.Add(new double[] { 2, 3, 5, 6, 5 });
DataList.Add(new double[] { 2, 3, 5, 6, 12 });

var ordered = DataList.OrderByDescending(l => l.Last());

lの各要素に対応しDataListます。l.Last()最後の要素をソート基準として使用します。

于 2013-03-28T20:44:12.117 に答える
0

また、Linqを使用:

var tList = new List<double[]>();
tList.Add(new double[] {2,3,4,5,8});
tList.Add(new double[] {2,3,4,5,9});
tList.Add(new double[] {2,3,4,5,5});
tList.Add(new double[] {2,3,4,5,12});

var t = from element in tList
        orderby element.Last() descending
        select element;
var tResults = t.ToList();
于 2013-03-28T20:55:53.860 に答える
-1

これは、LINQ を使用しない古い学校の並べ替えです。

        List<double[]> DataList = new List<double[]>();
        private void button1_Click(object sender, EventArgs e)
        {
            DataList.Add(new double[] { 2, 3, 5, 6, 8 });
            DataList.Add(new double[] { 2, 3, 5, 6, 9 });
            DataList.Add(new double[] { 2, 3, 5, 6, 5 });
            DataList.Add(new double[] { 2, 3, 5, 6, 12 });
            DataList.Sort(new DoubleArrayComparer());
            DataList.Reverse();
        }
        class DoubleArrayComparer : IComparer<double[]>
        {
            public int Compare(double[] x, double[] y)
            {
                if(x.Length>0 && y.Length>0)
                {
                    if(x[x.Length-1] > y[y.Length-1])
                        return 1;
                    else if(x[x.Length-1] < y[y.Length-1])
                        return -1;
                    else
                        return 0;

                }
                else if(x.Length == 0 && y.Length!=0)
                    return -1;
                else if(y.Length == 0 && x.Length!=0)
                    return 1;
                else
                    return 0;
            }
        }
于 2013-03-28T20:59:47.483 に答える