如何在Visual C#中对对象数组进行排序?

neu*_*cer 0 c# arrays object

我有一个对象有两个成员都是整数值.我制作了这些对象的数组.每个对象值都用随机整数填充.

我想根据第一个成员值对对象数组进行排序.我该怎么做?

Jon*_*eet 6

你在使用.NET 3.5吗?如果是这样,它就像:

array = array.OrderBy(x => x.MemberName).ToArray();
Run Code Online (Sandbox Code Playgroud)

这将创建一个新的数组 - 如果任何其他代码具有对旧数组的引用,它仍将看到未排序的数据.

或者,您可以使用以下Array.Sort三种方式之一就地对数组进行排序的方法:

  • 使您的类型工具IComparable<T>允许对象与另一个对象进行比较
  • 创建一个实例IComparer<T>可以比较该类型的任何两个对象
  • 创建一个类型的委托Comparison<T>,可以比较该类型的任何两个对象

如果您使用C#3,最后一个可能是最简单的解决方案:

Array.Sort(array, (x1, x2) => x1.MemberName.CompareTo(x2.MemberName));
Run Code Online (Sandbox Code Playgroud)