C#中的自然数值排序 [英] Natural numeric sort in C#

查看:106
本文介绍了C#中的自然数值排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在C#中对通用列表进行排序时遇到问题

I have a problem when sorting a generic list in C#

我有一个List<MyObjects> myList,而MyObject有一个字符串属性.

I have a List<MyObjects> myList, and MyObject has a string property.

现在对降序排序时看起来像这样

Now it looks like this when sorting descending

2.4.88

2.4.88

2.4.70

2.4.164->这是错误的

2.4.164 -> this is wrong

2.4.15

如何对列表进行排序?

我尝试过:

myList.sort(delegate(MyObjects obj1, MyObjects obj2)
{
    return obj2.version.CompareTo(obj1.version);
});

使用Linq(旧框架)不是一种选择

Its not an option to use Linq (older framework)

更新:我的列表也可以包含N/A

推荐答案

您不能将其作为字符串进行比较,因为显然这就是正确的字符串排序方式.您需要解析为数字或 Version

You cannot compare as strings, because obviously thats the proper string sorting. You need to parse to numbers or to an instance of the Version class:

myList.sort(delegate(MyObjects obj1, MyObjects obj2)
{
    return new Version(obj2.version).CompareTo(new Version(obj1.version));
});

这篇关于C#中的自然数值排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆