gpt4 book ai didi

c# - 根据另一个列表或不同大小对列表进行排序

转载 作者:行者123 更新时间:2023-11-30 13:16:52 24 4
gpt4 key购买 nike

考虑以下列表:

List<string> ordered = new List<string> (new string [] { "one", "two", "three", ... });
List<string> sequence1 = new List<string> (new string [] { "two", "three", "ten", ... });

列表 [ordered] 是一个包含所有可能值的超集。

列表 [sequence1][ordered] 列表的随机排序子集。它可能包含超集的部分或全部元素。

我目前有一个冗长的函数,可以根据 [ordered][sequence1] 进行排序,并且想知道是否有更简单的 Linq 方法来完成它。当前方法使用 for 循环迭代超集并尝试在子集中找到值并将其移动到其相关位置。

列表中的项目数量永远不会超过几十个,排序操作将很少被调用,因此效率在这里不是关键。

最佳答案

按索引排序应该可行:

var result = sequence1.OrderBy(ordered.IndexOf);

但是,如果可能有未在 ordered 中的项目,您将需要做一些额外的处理:

var result = from n in sequence1
let i = ordered.IndexOf(n)
orderby i == -1 ? ordered.Count : i
select n

关于c# - 根据另一个列表或不同大小对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20310972/

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