gpt4 book ai didi

c# - .Sort(Function(x, y) -> 当没有什么可排序时重新排列列表(即所有排序字段具有相同的值)

转载 作者:行者123 更新时间:2023-11-30 20:48:15 26 4
gpt4 key购买 nike

我正在使用:

mybookings.listOfBookings.Sort(Function(x, y) x.checkIn.Date.CompareTo(y.checkIn.Date)

现在,这很好用,但我遇到了一种情况,它在我的其余代码中引入了一个错误。

当我有一个像上面这样的对象列表,并且两个对象的 checkIn 具有相同的 date 值时,排序会重新排列列表...我我希望它保持原样,因为没有什么可排序的...

当它围绕列表交换时,它会在我的代码中进一步引入问题,即期望列表保持原样。是的,有人可能会争辩说我需要解决这个问题……但在这种情况下,还有许多其他因素预计列表中的第一次出现是实际第一次出现(基于对象的其他属性)。

简而言之,对象在软件的其他地方从最早( checkin )到最晚( checkin )得到“支付”。这里发生的事情是,现在列表中的位置 1 有一个“未支付”对象,例如,它应该在位置 2,并且最初是在位置 2。

  • 列表可以有任意数量的对象
  • 列表通常有多个对象,它根据不同的日期值正确排序
  • 排序依据的字段是日期类型。
  • 我无法检查排序前后的位置……我可以,但这违背了使用排序功能的想法。然后我可以推出自己的排序程序...(除非绝对必要,否则我不想这样做)

如果没有变化,是否可以以某种方式强制排序不对列表重新排序?

最佳答案

这是 documented :

This implementation performs an unstable sort; that is, if two elements are equal, their order might not be preserved. In contrast, a stable sort preserves the order of elements that are equal.

你可以先检查一下是否都一样:

Dim first As Date = mybookings.listOfBookings.First().checkIn.Date
Dim allSameDate As Boolean = mybookings.listOfBookings.Skip(1).
All(Function(x) x.checkIn.Date = first)
If Not allSameDate Then
' now you can sort '
mybookings.listOfBookings.Sort(Function(x, y) x.checkIn.Date.CompareTo(y.checkIn.Date)
End If

另一种方法是使用 LINQ 创建一个新的 List(Of T)Enumerable.OrderBy is stable :

This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved

关于c# - .Sort(Function(x, y) -> 当没有什么可排序时重新排列列表(即所有排序字段具有相同的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24906308/

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