如何对自定义类数组进行排序?
我有一个包含 2 个字符串和 1 个双精度(数量)的类。
class Donator
- string name
- string comment
- double amount
现在我已经填充了一个捐赠者数组。
如何按金额排序?
I have a class with 2 strings and 1 double (amount).
class Donator
- string name
- string comment
- double amount
Now I have a Array of Donators filled.
How I can sort by Amount?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
如果您实施
IComparable
您可以这样做:然后,您可以根据需要调用排序,例如:
.Sort()
调用您实现的用于排序的CompareTo()
方法。还有不带
IComparable
的 lambda 替代方案:If you implement
IComparable<Donator>
You can do it like this:You can then call sort on whatever you want, say:
The
.Sort()
calls theCompareTo()
method you implemented for sorting.There's also the lambda alternative without
IComparable<T>
:通过实现
IComparable
,然后使用Array.Sort
。By implementing
IComparable
and then useArray.Sort
.您还可以使用委托:
You can also use delegates:
我总是使用列表通用,例如
然后我调用 MyList.Sort
I always use the list generic, for example
then I call MyList.Sort
您可以使用 MyArray.OrderBy(n => n.Amount)
前提是您已包含 System.Linq 命名空间。
You could use
MyArray.OrderBy(n => n.Amount)
providing you have included the System.Linq namespace.
这是一种无需实现接口的排序。这是使用通用列表
Here is a sort without having to implement an Interface. This is using a Generic List
另一种方法是创建一个实现 IComparer 的类,然后在 Comparer 类中传递一个重载。
http://msdn.microsoft.com/en-us/library/8ehhxeaf。 aspx
这样,您就可以为所需的每种特定排序提供不同的类。您可以创建一个按名称、金额或其他排序的列表。
Another way is to create a class that implements IComparer, then there is an overload to pass in the Comparer class.
http://msdn.microsoft.com/en-us/library/8ehhxeaf.aspx
This way you could have different classes for each specific sort needed. You could create one to sort by name, amount, or others.