在vb.net中,按不同的对象属性对自定义对象列表进行多次排序
我想按多个对象属性对自定义对象列表进行排序 例如,我有:在vb.net中,按不同的对象属性对自定义对象列表进行多次排序,vb.net,list,sorting,Vb.net,List,Sorting,我想按多个对象属性对自定义对象列表进行排序 例如,我有: MyObject.A MyObject.B MyObject.C 我想先按属性“A”的值,然后按B,然后按C对列表进行排序。所有这些属性都是字符串(它们可能相等,也可能不相等,也可能不包含数字字符) 在浏览web之后,我发现这适用于我只需要按一个属性(在本例中按“A”)对列表进行排序的情况: 效果很好 所以在那之后,我想我只需要按照正确的顺序进行更多的排序,我试着做如下的事情: MyList.Sort(Function(x, y) x.
MyObject.A
MyObject.B
MyObject.C
我想先按属性“A”的值,然后按B,然后按C对列表进行排序。所有这些属性都是字符串(它们可能相等,也可能不相等,也可能不包含数字字符)
在浏览web之后,我发现这适用于我只需要按一个属性(在本例中按“A”)对列表进行排序的情况:
效果很好
所以在那之后,我想我只需要按照正确的顺序进行更多的排序,我试着做如下的事情:
MyList.Sort(Function(x, y) x.C.CompareTo(y.C))
MyList.Sort(Function(x, y) x.B.CompareTo(y.B))
MyList.Sort(Function(x, y) x.A.CompareTo(y.A))
有时有效,有时无效。如果列表条目很少(
至于您现有的方法不起作用的原因:就是这样,。Sort()方法不稳定。您似乎希望数字能像数字一样排序。“9”在文本sortSweet中总是比“10”或“800”多!非常感谢。非常有效!我不能使用LINQ,还有其他解决方案吗?
MyList.Sort(Function(x, y) x.C.CompareTo(y.C))
MyList.Sort(Function(x, y) x.B.CompareTo(y.B))
MyList.Sort(Function(x, y) x.A.CompareTo(y.A))
MyList = (MyList.OrderBy(Function(i) i.A).
ThenBy(Function(i) i.B).
ThenBy(Function(i) i.C)).ToList()