Объединить строку для строки в двух отдельных StringCollections

Я пытаюсь взять две коллекции строк и объединить каждую строку в обеих коллекциях одновременно, чтобы показать полный путь к файлу для моего пользователя.

Примеры, чтобы помочь устранить путаницу:

  • String Collection 1 будет содержать список путей.
    Пример:

    C:\windows\xxxx\xxx\xx, C:\Users\xxx\xxx, C:\test\xxx\xxx
    
  • String Collection 2 будет содержать список имен файлов.
    Пример:

    file.txt, asd.txt, mydll.dll
    

Каждый список содержит ключи друг к другу в том же номере строки, и мне просто нужно объединить их, чтобы вывести их конечному пользователю.

String Collection Line 1 + SC2 Line 1 = Path
SC Line 2 + SC2 Line 2 = Path
SC Line 3 + SC2 Line 3 = Path

Информация не доступна в комбинированном состоянии, поэтому я буду помещать данные в два отдельных текстовых поля WPF, а затем их содержимое будет перетягиваться в коллекцию строк.

Первая коллекция

StringCollection lines = new StringCollection();
int lineCount = filePath.LineCount;

for (int line = 0; line < lineCount; line++)
    // Get line text and add to string collection
    lines.Add(filePath.GetLineText(line));

Вторая коллекция

StringCollection lines2 = new StringCollection();
int lineCount2 = fileName.LineCount;

for (int line = 0; line < lineCount; line++)
    // Get line text and add to string collection
    lines.Add(fileName.GetLineText(line));

Любая помощь приветствуется!

Редактировать 1

Я экспериментировал с командой ZIP благодаря Еве, но я также нашел альтернативный маршрут. Существует ли более безопасный маршрут с использованием zip по сравнению с кодом ниже?

Имейте в виду, у меня будет функция, чтобы проверить количество строк и убедиться, что они одинаковы.

        StringCollection lines = new StringCollection();
        int lineCount = itemIDBox.LineCount;

        for (int line = 0; line < lineCount; line++)
        {
            string id;
            string rev;
            string combined;

            id = itemIDBox.GetLineText(line);
            rev = revBox.GetLineText(line);

            combined = id + @"\" + rev;

            lines.Add(combined);
        }

1 ответ

Решение

Вы можете использовать Zip метод из System.Linq,

var fullPaths = lines.Cast<string>().
    Zip(lines2.Cast<string>(), (path, fileName) => Path.Combine(path, fileName)).
    ToArray();
Другие вопросы по тегам