単純です、私はこのような構造体を持っています:
struct bla{
string name;
float depth;
}
私はbla配列を持っていますが、最初に最大の深さである深さで並べ替えたいと思います。代理人は何をする/返す必要がありますか?具体的な例が見つかりません。
ここに例があります:構造体の配列をどのようにソートしますか?
これを行うには、コンパクトな方法と拡張された方法の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を交換します。
あなたはその過負荷を使用することができ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));
このようにして、新しい配列を作成する代わりに、元の配列を並べ替えます。
を使用してSystem.Linq;
blas.OrderByDescending(x=>x.depth)
また
Array.Sort(blas, (x, y) => y.depth.CompareTo(x.depth) );