C# 如何将3个字符串数组(包含文件)放入单个数组中

C# 如何将3个字符串数组(包含文件)放入单个数组中,c#,C#,我的filesHD[]数组包含2个文件filesDT[]包含2个文件,filesTD[]也包含2个文件 我想创建一个字符串数组,它将包含filesHD,filesDT,filesTD的所有6个文件 string[] filesHD = Directory.GetFiles(dirPath, filepattern1); string[] filesDT = Directory.GetFiles(dirPath, filepattern2); string[] filesTD = Direct

我的
filesHD[]
数组包含2个文件
filesDT[]
包含2个文件,
filesTD[]
也包含2个文件

我想创建一个字符串数组,它将包含
filesHD
filesDT
filesTD
的所有6个文件

string[] filesHD = Directory.GetFiles(dirPath, filepattern1);

string[] filesDT = Directory.GetFiles(dirPath, filepattern2);

string[] filesTD = Directory.GetFiles(dirPath, filepattern3);

你能试试下面的代码吗

string[] Allfiles = new string [filesHD + filesDT + filesTD]
List AllFiles=new List();
AllFiles.Concat(filesHD);
AllFiles.Concat(filesDT);
AllFiles.Concat(filesTD);
var strAllFiles=AllFiles.ToArray();
添加引用:
使用System.Linq


注意:在没有编译器的情况下键入,无法检查语法错误。

有几种方法可以做到这一点,在C语言中,最简单的方法可能是:

List<string> AllFiles = new List<string>();
AllFiles.Concat(filesHD);
AllFiles.Concat(filesDT);
AllFiles.Concat(filesTD);

var strAllFiles = AllFiles.ToArray();


如果要多次枚举它,可以通过调用
.ToArray()
来结束它,如果只需对它执行一次
foreach
,则不要担心
.ToArray()
Union
Concat
之间的区别在于
Union
使用默认的相等比较器忽略重复项。

如果您想简单一点,还可以尝试以下操作:

var allFiles = filesHD.Concat(filesDT).Concat(filesTD);
List lstAllFiles=new List();
lstAllFiles.AddRange(filesHD);
lstAllFiles.AddRange(filesDT);
lstAllFiles.AddRange(filesTD);
字符串[]strAllFiles=lstAllFiles.ToArray();
此方法不使用Linq…

希望这能有所帮助。

请注意:每个阵列上的
ToList
不是必需的
Concat
takes
IEnumerable
Concat
更好,因为
Union
将删除重复项,我们不希望这样做。@unlimit是的,我在回答的最后指出了这一点。但是,这可能是用户想要的。@取消限制,但如果我们谈论的是同一文件夹中的文件,我们可能希望删除重复的文件…@nurchi从问题上看,OP似乎不希望这样。然而,这一答案解释了这两种选择。
var allFiles = filesHD.Concat(filesDT).Concat(filesTD);
List<string> lstAllFiles=new List<string>();
lstAllFiles.AddRange(filesHD);
lstAllFiles.AddRange(filesDT);
lstAllFiles.AddRange(filesTD);
string[] strAllFiles=lstAllFiles.ToArray();