C# 在迭代期间将值保存在数组中
我有一个名为GetFileList的函数。我在这里通过使用;将函数分隔开来,为该函数提供了不同的扩展;。我的问题是字符串[]中的值 第一次迭代中的文件列表在第二次迭代中丢失。如何用所有迭代中的数据填充文件列表C# 在迭代期间将值保存在数组中,c#,.net,C#,.net,我有一个名为GetFileList的函数。我在这里通过使用;将函数分隔开来,为该函数提供了不同的扩展;。我的问题是字符串[]中的值 第一次迭代中的文件列表在第二次迭代中丢失。如何用所有迭代中的数据填充文件列表 public static string[] GetFileList(string Directory,string extensions) { string[] extensionlist = extensions.Split(';'); FileLis
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;
}
只需使用并使用列表即可:
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();
}
publicstaticstring[]GetFileList(字符串目录,字符串扩展名)
{
string[]extensionlist=extensions.Split(“;”);
List FileList=新列表();
foreach(extensionlist中的字符串扩展名)
{
AddRange(System.IO.Directory.GetFiles(Directory,“*.”+扩展名,System.IO.SearchOption.AllDirectories));
}
返回FileList.ToArray();
}
您可以使用LINQ:
string[] FileList = extensions.Split(';').Distinct()
.SelectMany(ex => System.IO.Directory.GetFiles(Directory, "*." + ex, SearchOption.AllDirectories))
.ToArray();
如果您使用的是.NET4.5+,请尝试下面的代码,这样会得到更快的结果
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;
}
publicstaticstring[]GetFileList(字符串目录,字符串扩展名)
{
string[]extensionlist=extensions.Split(“;”);
var FileList=目录。枚举文件(目录)
.Where(file=>extensionlist.Contains(Path.GetExtension(file))).ToArray();
返回文件列表;
}
我没有使用ArrayList。这是一个陷阱[]你必须使用集合。数组大小是不变的,因为它不能增长。问题是,您用新的数组替换了数组引用,而它不是一个添加项。您将使用上一次迭代中的数组完成(仅包含具有上一次扩展名的文件)