2013-01-10 26 views
0

我正在嘗試取兩個字符串集合並將兩個集合中的每一行同時組合以顯示我的用戶的完整文件路徑。在兩個單獨的StringCollections中組合線條線

例子,以幫助清理混亂:

  • 字符串集合1將包含的路徑列表。
    例子:

    C:\windows\xxxx\xxx\xx, C:\Users\xxx\xxx, C:\test\xxx\xxx 
    
  • 字符串集合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。

首先收集

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); 
     } 
+0

而不是使用'+'爲什麼不擡頭看的string.join()方法,如果沒有則查找該string.Split()你想要的路徑,你可以只是做'字符串的方法串聯的字符串[] splitStr = Split(',');' – MethodMan

+0

不要執行'@「\」',而是使用'Path.DirectorySeparatorChar'。 –

回答

4

您可以從System.Linq使用Zip方法。

var fullPaths = lines.Cast<string>(). 
    Zip(lines2.Cast<string>(), (path, fileName) => Path.Combine(path, fileName)). 
    ToArray(); 
+0

我太慢了...... +1 –

+2

使用[Path.Combine](http://msdn.microsoft.com/en-us/library/dd781134.aspx)而不是'+'。 – Mike

+0

@Mike你說得對,可能會稍微慢一點,但更安全。 – Mir