5

単純です、私はこのような構造体を持っています:

struct bla{
  string name;
  float depth;
}

私はbla配列を持っていますが、最初に最大の深さである深さで並べ替えたいと思います。代理人は何をする/返す必要がありますか?具体的な例が見つかりません。

4

3 に答える 3

9

ここに例があります:構造体の配列をどのようにソートしますか?

これを行うには、コンパクトな方法と拡張された方法の2つの方法があります。

struct bla
{
    public string name;
    public float depth;
}

bla[] theArray = new bla[5];

Array.Sort(theArray, (x, y) => x.depth.CompareTo(y.depth));

Array.Sort(theArray, delegate(bla bla1, bla bla2)
{
    return bla1.depth.CompareTo(bla2.depth);
});

ソート順が希望と逆の場合は、xまたはyまたはbla1とbla2を交換します。

于 2012-08-19T12:23:58.403 に答える
7

あなたはその過負荷を使用することができArray.SortますComparison<T>

bla[] blas = new[] { 
    new bla() { name = "3", depth = 3 }, 
    new bla() { name = "4", depth = 4 }, 
    new bla() { name = "2", depth = 2 }, 
    new bla() { name = "1", depth = 1 }, 
};

Array.Sort<bla>(blas, (x,y) => x.depth.CompareTo(y.depth));

このようにして、新しい配列を作成する代わりに、元の配列を並べ替えます。

于 2012-08-19T12:19:52.427 に答える
3

を使用してSystem.Linq;

blas.OrderByDescending(x=>x.depth)

また

Array.Sort(blas, (x, y) => y.depth.CompareTo(x.depth) );
于 2012-08-19T12:09:37.793 に答える