按vb.net中的对象属性数值对自定义对象列表进行排序

时间:2016-10-14 13:05:00

标签: vb.net sorting numbers

我想按对象属性数值对自定义对象列表进行排序。

例如,我有自定义对象MyObject,其属性为:

MyObject.A
MyObject.B
MyObject.C

A是包含数字值的字符串,BC是包含文字的字符串。

我希望A属性将包含这些对象的列表从最小数字到最大数字进行排序。

我试过用这个:

MyList = MyList.OrderBy(Function(i) i.A).ToList()

但是这会对列表进行排序,就像数字是字符串一样。
例如,我得到结果:1,10,11,2,3,4
我真正想要的是:1,2,3,4,10,11

如何按数值对列表进行排序?

1 个答案:

答案 0 :(得分:1)

然后这不是双属性,而是显示双精度的字符串。要么总是将此字符串转换为双倍,这不是非常有效,要么将它们存储为double,并且只将它们转换为需要显示它们的字符串(推荐)。

但是,这是Parse方法:

MyList = MyList.OrderBy(Function(i) Double.Parse(i.A)).ToList()

如果它包含点并且您使用逗号(如注释),请使用:

MyList = MyList.OrderBy(Function(i) Double.Parse(i.A, CultureInfo.InvariantCulture)).ToList()