从列表中删除冗余文件夹路径

时间:2019-06-24 22:04:22

标签: java c#

我有以下列表,其中包含一系列文件夹路径。其中一些是多余的,因此我需要删除它们,并且最终列表应仅包含底层文件夹:

初始列表:

var paths = new List<string>
{
    "Pavements/",
    "Pavements/2019_05/",
    "Pavements/2019_06/",
    "Pavements/2019_06/A/",
    "Roads/",
    "Roads/2019_06/"
};

最终列表应如下所示:

paths =
{
    "Pavements/2019_05/",
    "Pavements/2019_06/A/",
    "Roads/2019_06/"
};

即所有上层文件夹路径均已删除。

有人知道我能做到这一点吗?我有一种需要递归方法的感觉,但不确定如何去做。我正在使用C#,但是用Java或类似的方法回答是可以的。 谢谢。

1 个答案:

答案 0 :(得分:2)

一种方法是使用linq查询,该查询将每个项目与所有其他项目进行比较,并且仅当其他项目都不以该项目开头时才返回该项目:

paths = paths.Where(path => !paths.Any(p => p != path && p.StartsWith(path))).ToList();