如何使用Array.sort按特定元素对结构数组进行排序

很简单,我有这样的结构:

struct bla{ string name; float depth; } 

我有一个bla数组,我想按深度排序,首先是最深的。 代表应该做什么/返回什么? 我找不到任何具体的例子。

您可以使用Array.Sort的重载,它接受Comparison

 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(blas, (x,y) => x.depth.CompareTo(y.depth)); 

这样,您可以对原始数组进行排序,而不是创建新数组。

你在这里找到一个例子: 我如何对结构数组进行排序?

你有两种方法可以做到这一点,紧凑或扩展方式:

 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。

使用System.Linq;

 blas.OrderByDescending(x=>x.depth) 

要么

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