gpt4 book ai didi

vb.net - 在 vb.net 中按不同对象属性对自定义对象列表进行多次排序

转载 作者:行者123 更新时间:2023-12-02 06:50:17 24 4
gpt4 key购买 nike

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

例如,我有:

MyObject.A
MyObject.B
MyObject.C

我想首先按属性“A”的值对列表进行排序,然后按 B 排序,然后按 C 排序。所有这些属性都是字符串(彼此可能相等也可能不相等,并且可能包含也可能不包含/包含数字字符)。

在浏览网页后我发现 something这适用于我只需要按一个属性(在本例中按“A”)对列表进行排序的情况:

MyList.Sort(Function(x, y) x.A.CompareTo(y.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))

这有时有效,有时无效。如果列表条目很少(<10),则它可以正常工作,例如,如果“A”值相等,则列表按“B”值排序,如果这些值相等,则按“C”排序。但是,当我添加更多条目时,它会崩溃,只有最后一个排序是正确的。似乎每个下一个排序都不会保留不需要排序的条目的原始顺序。

我该如何排序这样的东西?

最佳答案

MyList = (MyList.OrderBy(Function(i) i.A).
ThenBy(Function(i) i.B).
ThenBy(Function(i) i.C)).ToList()

至于为什么你现有的方法不起作用:那就是 difference between a stable and an unstable sortAccording to MSDN ,Sort() 方法不稳定

关于vb.net - 在 vb.net 中按不同对象属性对自定义对象列表进行多次排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25144844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com