我有一个名为GetFileList的函数。我正在通过使用它来分隔函数给予不同的扩展;。我的问题是字符串[]中的值 第一次迭代期间的FileList在第二次迭代期间丢失。如何使用来自所有迭代的数据填充FileList
public static string[] GetFileList(string Directory,string extensions)
{
string[] extensionlist = extensions.Split(';');
FileList = new string[] { };
foreach (string extension in extensionlist)
{
FileList =System.IO.Directory.GetFiles(Directory, "*." + extension, System.IO.SearchOption.AllDirectories);
}
return FileList;
}
答案 0 :(得分:1)
只需使用AddRange并使用列表执行此操作:
public static string[] GetFileList(string Directory,string extensions)
{
string[] extensionlist = extensions.Split(';');
List<string> FileList = new List<string>();
foreach (string extension in extensionlist)
{
FileList.AddRange(System.IO.Directory.GetFiles(Directory, "*." + extension, System.IO.SearchOption.AllDirectories));
}
return FileList.ToArray();
}
答案 1 :(得分:0)
您可以使用LINQ:
string[] FileList = extensions.Split(';').Distinct()
.SelectMany(ex => System.IO.Directory.GetFiles(Directory, "*." + ex, SearchOption.AllDirectories))
.ToArray();
答案 2 :(得分:0)
如果您使用的话,请尝试以下代码.net 4.5 + Directory.EnumerateFiles将提供更快的结果
public static string[] GetFileList(string Directory, string extensions)
{
string[] extensionlist = extensions.Split(';');
var FileList = Directory.EnumerateFiles(Directory)
.Where(file => extensionlist.Contains(Path.GetExtension(file))).ToArray<string>();
return FileList;
}