gpt4 book ai didi

c# - 按外部排序顺序对通用列表进行排序

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

我有一个通用列表

简化示例

var list = new List<string>()
{
"lorem1.doc",
"lorem2.docx",
"lorem3.ppt",
"lorem4.pptx",
"lorem5.doc",
"lorem6.doc",
};

我想做的是根据外部列表顺序对这些项目进行排序

例子

var sortList = new[] { "pptx", "ppt", "docx", "doc" };

// Or
var sortList = new List<string>() { "pptx", "ppt", "docx", "doc" };

linq 是否有任何内置功能可以帮助我实现这一目标,还是我必须采用 foreach 方式?

最佳答案

通过列表,您可以将 IndexOf 用于 Enumerable.OrderBy:

var sorted = list.OrderBy(s => sortList.IndexOf(Path.GetExtension(s)));

因此 sortList 中扩展的索引决定了其他列表中的优先级。未知扩展具有最高优先级,因为它们的索引为 -1。

但是您需要在扩展中添加一个点才能使其正常工作:

var sortList = new List<string>() { ".pptx", ".ppt", ".docx", ".doc" };

如果这不是一个选项,您必须摆弄 SubstringRemove,例如:

var sorted = list.OrderBy(s => sortList.IndexOf(Path.GetExtension(s).Remove(0,1)));

关于c# - 按外部排序顺序对通用列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14234431/

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