Вы должны войти, чтобы создавать сообщения и темы.

Удалить элементы, которые являются префиксами других

Добрый день, помогите пожалуйста, есть например такой List

Спойлер

D:\Programs\Discord\App\Discord
D:\Programs\Discord\App\Discord\app-1.0.9002
D:\Programs\Discord\App\Discord\app-1.0.9002\modules
D:\Programs\Data\VEGAS Pro
D:\Programs\Data\VEGAS Pro\local
D:\Programs\Data\VEGAS Pro\local\modified
D:\Programs\Audition\Data
D:\Programs\Audition\Data\AppDataRoaming
D:\Programs\Audition\Data\AppDataRoaming\Audition

Как я могу получить только 

Спойлер

D:\Programs\Discord\App\Discord
D:\Programs\Data\VEGAS Pro
D:\Programs\Audition\Data

?

Добрый день.
Забавная задачка 🙂 
Быстро пришло в голову только через костыль:

Спойлер

        private void button1_Click(object sender, EventArgs e)
        {
            var path = new List<string>(){ 
                "D:\\Programs\\Discord\\App\\Discord",
                "D:\\Programs\\Discord\\App\\Discord\\app-1.0.9002",
                "D:\\Programs\\Discord\\App\\Discord\\app-1.0.9002\\modules",
                "D:\\Programs\\Data\\VEGAS Pro",
                "D:\\Programs\\Data\\VEGAS Pro\\local",
                "D:\\Programs\\Data\\VEGAS Pro\\local\\modified",
                "D:\\Programs\\Audition\\Data",
                "D:\\Programs\\Audition\\Data\\AppDataRoaming",
                "D:\\Programs\\Audition\\Data\\AppDataRoaming\\Audition" };
            List<string> new_list = new List<string>();
            for (int i = 0; i <= 10; i++)
            {
                new_list = Del(Del(path));
            }
            MessageBox.Show(String.Join("\r\n", new_list));
        }

        private List<string> Del(List<string> instring)
        {
            var new_path = new List<string>();
            instring.ForEach(x =>
            {
                instring.Where(t => x.StartsWith(t) && t != x).ToList().ForEach(y =>
                {
                    new_path.Add(y);
                });
            });
            return new_path.Distinct().ToList();
        }
    }

В цикле for в качестве максимального значения для i указывается  максимальная "глубина" вложеных папок.

Лайкнул Владимир
Владимир

Спасибо, работает