如何使用 IComparable 接口?
我需要一个有关如何使用 IComparable 接口的基本示例,以便我可以按升序或降序以及要排序的对象类型的不同字段进行排序。
I need a basic example of how to use the IComparable
interface so that I can sort in ascending or descending order and by different fields of the object type I'm sorting.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
好吧,既然您使用的是
List
,那么使用Comparison
就会简单得多,例如:当然,使用 LINQ,您可以use:
但是您可以很容易地在
List
中重新引入它(用于就地重新排序); 下面是一个允许使用 lambda 语法对List
进行Sort
的示例:Well, since you are using
List<T>
it would be a lot simpler to just use aComparison<T>
, for example:Of course, with LINQ you could just use:
But you can re-introduce this in
List<T>
(for in-place re-ordering) quite easily; Here's an example that allowsSort
onList<T>
with lambda syntax:这是一个简单的示例:
“这很好,但是如果我希望能够控制排序顺序,或者按另一个字段排序怎么办?”
很简单。 我们需要做的就是向对象添加更多字段。 首先,我们将为不同的排序类型添加一个字符串,然后添加一个布尔值来表示我们是按降序还是升序排序,然后添加一个字段来确定我们要搜索的字段。
“告诉我怎么做!”
既然你问得这么好。
Here's a simple example:
"That's great, but what if I want to be able to control the sort order, or sort by another field?"
Simple. All we need to do is add few more fields to the object. First we'll add a string for a different sort type and then we'll add a boolean to denote whether we're sorting in descending or ascending order and then add a field which determines which field we want to search by.
"Show me how!"
Well since you asked so nicely.
如果你想要动态排序,你可以使用 LINQ
或 List 类的“Sort”方法:
If you want dynamic sort, you can use LINQ
or "Sort" method of List class:
您可以使用它来对列表进行排序
You can use this for sorting list
这可能与排序顺序无关,但我认为它仍然是
IComparable
的一个有趣用途:这些简单的扩展方法允许您对实现
的任何类型进行参数范围检查IComparable 像这样:
This might not be in relation to sorting order, but it is still - I think - an interesting use of
IComparable
:These simple extension methods allow you to do parameter range checking for any type that implements
IComparable
like this: