2013-01-10 47 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