0

2 つの文字列コレクションを取得し、両方のコレクションの各行を同時に結合して、ユーザーの完全なファイル パスを表示しようとしています。

混乱を解消するための例:

  • 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

結合された状態では情報にアクセスできないため、データを 2 つの別個の WPF TextBox に配置し、それらのコンテンツを stringcollection に取り込みます。

ファーストコレクション

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

Eve のおかげで 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);
        }
4

1 に答える 1

4

Zipからメソッドを使用できますSystem.Linq

var fullPaths = lines.Cast<string>().
    Zip(lines2.Cast<string>(), (path, fileName) => Path.Combine(path, fileName)).
    ToArray();
于 2013-01-10T22:27:27.200 に答える