如何按类实例的属性值对包含类对象的数组进行排序?

发布于 2024-08-02 04:52:02 字数 817 浏览 0 评论 0 原文

可能的重复:
如何对数组进行排序C# 中特定字段的对象?

给出以下代码:

MyClass myClass;
MyClassArray[] myClassArray = new MyClassArray[10];

for(int i; i < 10; i++;)
{
    myClassArray[i] = new myClass();
    myClassArray[i].Name = GenerateRandomName();
}

最终结果可能如下所示:

myClassArray[0].Name //'John';
myClassArray[1].Name //'Jess';
myClassArray[2].Name //'James';

如何根据 myClass.Name 属性按字母顺序对 MyClassArray[] 数组进行排序,以便数组看起来像这样最后:

myClassArray[0].Name //'James';
myClassArray[1].Name //'Jess';
myClassArray[2].Name //'John';

*编辑:我正在使用 VS 2005/.NET 2.0。

Possible Duplicate:
How to sort an array of object by a specific field in C#?

Given the following code:

MyClass myClass;
MyClassArray[] myClassArray = new MyClassArray[10];

for(int i; i < 10; i++;)
{
    myClassArray[i] = new myClass();
    myClassArray[i].Name = GenerateRandomName();
}

The end result could for example look like this:

myClassArray[0].Name //'John';
myClassArray[1].Name //'Jess';
myClassArray[2].Name //'James';

How would you sort the MyClassArray[] array according to the myClass.Name property alphabetically so the array will look like this in the end:

myClassArray[0].Name //'James';
myClassArray[1].Name //'Jess';
myClassArray[2].Name //'John';

*Edit: I'm using VS 2005/.NET 2.0.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

数理化全能战士 2024-08-09 04:52:02

您可以使用 Array.Sort 需要 Comparison参数:

Array.Sort(myClassArray,
    delegate(MyClass x, MyClass y) { return x.Name.CompareTo(y.Name); });

You can use the Array.Sort overload that takes a Comparison<T> parameter:

Array.Sort(myClassArray,
    delegate(MyClass x, MyClass y) { return x.Name.CompareTo(y.Name); });
旧人 2024-08-09 04:52:02

让 MyClass 实现 IComparable 接口,然后使用 Array.Sort

这样的东西适用于 CompareTo (假设 Name 属性的类型为 string )

public int CompareTo(MyClass other)
{
    return this.Name.CompareTo(other.Name);
}

或者简单地使用 Linq

MyClass[] sorted = myClassArray.OrderBy(c => c.Name).ToArray();

Have MyClass implement IComparable interface and then use Array.Sort

Something like this will work for CompareTo (assuming the Name property has type string)

public int CompareTo(MyClass other)
{
    return this.Name.CompareTo(other.Name);
}

Or simply using Linq

MyClass[] sorted = myClassArray.OrderBy(c => c.Name).ToArray();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文