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

前端之家收集整理的这篇文章主要介绍了c# – 按外部排序顺序对通用列表进行排序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个通用列表

简化示例

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","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" };

如果这不是一个选项,你必须摆弄子串或删除,例如:

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

猜你在找的C#相关文章