c# – 按外部排序顺序对通用列表进行排序
发布时间:2020-12-15 18:14:31 所属栏目:百科 来源:网络整理
导读:我有一个通用列表 简化示例 var list = new Liststring() { "lorem1.doc","lorem2.docx","lorem3.ppt","lorem4.pptx","lorem5.doc","lorem6.doc",}; 我想要做的是根据外部列表排序对这些项目进行排序 在例子中 var sortList = new[] { "pptx","ppt","docx","
我有一个通用列表
简化示例 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))); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |