说我有这个清单

List<string> sampleList = new List<string>
{
   "C:\\Folder1",
   "D:\\Folder2",
   "C:\\Folder1\\Folder3",
   "C:\\Folder111\\Folder4"
};


我想删除其他文件夹中包含的路径,例如,我们有C:\ Folder1和C:\ Folder1 \ Folder3

该列表的第三个条目应该消失,因为C:\ Folder1包含C:\ Folder1 \ Folder3

在.net框架中有哪些功能或者我必须自己编写算法?

最佳答案

假设它不是一个庞大的清单。

List<string> sampleList = new List<string>
{
   "C:\\Folder1",
   "D:\\Folder2",
   "C:\\Folder1\\Folder3",
   "C:\\Folder111\\Folder4",
   "C:\\Folder1"
};

string sep = Path.DirectorySeparatorChar.ToString();
List<string> shortList = sampleList.Where (l =>
    sampleList.Where(s =>
        l.StartsWith(s + (s.EndsWith(sep) ? String.Empty : sep)) && s != l).Count() == 0
).Distinct().ToList();

关于c# - C#从列表中删除冗余路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3013041/

10-09 23:50