gpt4 book ai didi

C# 基于另一个列表对列表进行排序

转载 作者:太空狗 更新时间:2023-10-29 20:55:41 26 4
gpt4 key购买 nike

我有一个包含多个 List<> 的类。它基本上是一个表,每列都存储为 List<>。每列不包含相同的类型。每个列表也具有相同的长度(具有相同数量的元素)。

例如:

我有 3 个 List<> 对象;一个列表、两个列表和三个列表。

//Not syntactically correct
List<DateTime> one = new List...{4/12/2010, 4/9/2006, 4/13/2008};
List<double> two = new List...{24.5, 56.2, 47.4};
List<string> three = new List...{"B", "K", "Z"};

我希望能够从最旧到最新对列表进行排序:一个 = {4/9/2006, 4/13/2008, 4/12/2010};

为此,我将元素 0 移到了末尾。

然后我想以相同的方式对列表二和三进行排序;将第一个移动到最后一个。

因此,当我对一个列表进行排序时,我希望其他列表中相应索引中的数据也根据该列表的排序方式进行更改。

我猜我必须以某种方式重载 IComparer,但我觉得有一条我还没有意识到的捷径。

最佳答案

我过去通过保留或创建单独的索引列表来处理这种设计。您首先对索引列表进行排序,然后使用它对其他列表进行排序(或仅访问)。您可以通过为索引列表创建自定义 IComparer 来完成此操作。您在 IComparer 中所做的是根据键列表中的索引进行比较。换句话说,您是在间接对索引列表进行排序。像这样的东西:

// This is the compare function for the separate *index* list.
int Compare (object x, object y)
{
KeyList[(int) x].CompareTo(KeyList[(int) y])
}

因此您正在根据键列表中的值对索引列表进行排序。然后您可以使用该排序的键列表来重新排序其他列表。如果不清楚,我会尝试添加一个更完整的示例,当我有机会发布一个示例时。

关于C# 基于另一个列表对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3355928/

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