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

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

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

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

array = array.OrderBy(x => x.MemberName).ToArray(); 

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

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

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

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

 Array.Sort(array, (x1, x2) => x1.MemberName.CompareTo(x2.MemberName)); 

您必须首先在类中实现IComparable 。 这些应该有助于:
排序对象的ArrayList
如何在Visual C#中使用IComparable和IComparer接口

 class Program { class Foo { public int FirstMemberValue { get; set; } } static void Main(string[] args) { var foos = new[] { new Foo { FirstMemberValue = 1 }, new Foo { FirstMemberValue = 3 }, new Foo { FirstMemberValue = 2 } }; Array.Sort(foos, (f1, f2) => f1.FirstMemberValue.CompareTo(f2.FirstMemberValue)); foreach (var item in foos) { Console.WriteLine(item.FirstMemberValue); } } }