Объединить строку для строки в двух отдельных 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();