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
takesIEnumerable
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();