首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据一个集合和其他条件对另一个集合进行排序

如何根据一个集合和其他条件对另一个集合进行排序
EN

Stack Overflow用户
提问于 2021-08-15 06:43:32
回答 2查看 52关注 0票数 1

我有一个要排序的列表:

代码语言:javascript
复制
List<string> temp = {
    "Mina 1", "Mina 2", 
    "Planning 3", "Planning 2", "Planning 1", "Planning 4", 
    "Kira 2", "Kira 1"};

要排序的列表:

代码语言:javascript
复制
// Sort items based on the following order of name
List<string> listToSort= {"Planning", "Mina", "Kira" };

我正在尝试根据listToSort和数字增量对temp进行排序

预期结果:

代码语言:javascript
复制
List<string> temp = {
    "Planning 1", "Planning 2", "Planning 3", "Planning 4",
    "Mina 1", "Mina 2",  
    "Kira 1", "Kira 2"};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-15 06:49:20

由于这些都是列表,因此可以组合使用FindIndexStartsWith

代码语言:javascript
复制
var result = temp
    .OrderBy(t => listToSort.FindIndex(s => s.StartsWith(t)))
    .ThenBy(t => t);
票数 1
EN

Stack Overflow用户

发布于 2021-08-15 06:58:17

虽然不是最有效的,但一种选择是使用SelectMany

代码语言:javascript
复制
var sorted = listToSort.SelectMany(sortKey => temp.Where(t => t.StartsWith(sortKey)).OrderBy(s => s));

对于listToSort中的每个字符串,SelectMany都会查找temp中的所有相关字符串并按它们排序。

如果你需要自然排序(所以"Kira 11“会排在"Kira 9”之后),你可以添加一个比较器,例如Natural Sort Order in C#

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68789292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档