在迭代期间保存数组中的值

时间:2014-08-21 11:42:12

标签: c# .net

我有一个名为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;
   }

3 个答案:

答案 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;
}