我想按对象属性数值对自定义对象列表进行排序。
例如,我有自定义对象MyObject
,其属性为:
MyObject.A
MyObject.B
MyObject.C
A
是包含数字值的字符串,B
和C
是包含文字的字符串。
我希望A
属性将包含这些对象的列表从最小数字到最大数字进行排序。
我试过用这个:
MyList = MyList.OrderBy(Function(i) i.A).ToList()
但是这会对列表进行排序,就像数字是字符串一样。
例如,我得到结果:1,10,11,2,3,4
。
我真正想要的是:1,2,3,4,10,11
如何按数值对列表进行排序?
答案 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()