как быстро искать в 100 папках каталога данных.Вот пример окна URL
D:\DataDirectory\DataDirectory1\Product
D:\DataDirectory\DataDirectory1\PB
....
D:\DataDirectory\DataDirectory145\Product
D:\DataDirectory\DataDirectory145\PB
D:\DataDirectory\DataDirectory146\Product
D:\DataDirectory\DataDirectory146\PB
D:\DataDirectory\DataDirectory147\Product
D:\DataDirectory\DataDirectory147\PB
Вот пример данных partNo в папке
-Folder Product (contains 122867 items)
D:\DataDirectory\DataDirectory145\Product\149329762 000007.xml
D:\DataDirectory\DataDirectory145\Product\149329762 000031.xml
....
D:\DataDirectory\DataDirectory145\Product\149329762 000090.xml
D:\DataDirectory\DataDirectory145\Product\149329762 000114.xml
-Folder PWB (contains 125794 items)
D:\DataDirectory\DataDirectory145\PB\149329762M0000007.xml
D:\DataDirectory\DataDirectory145\PB\149329762M0000090.xml
....
D:\DataDirectory\DataDirectory145\PB\149329762M0000104.xml
D:\DataDirectory\DataDirectory145\PB\149329762M0000199.xml
Это для поиска partNo в папке DataDirectory.Я попытался выполнить поиск partNo в папке DataDirectory только для 6 папок
DataDirectory132,
DataDirectory143,
DataDirectory145,
DataDirectory146,
DataDirectory147,
DataDirectory2
, но для завершения поиска требуется 8 минут.Не включайте поиск в 147 папках и получайте файл данных.Я новичок в c #
Вот код, который я пробовал
private void Button1_Click(object sender, EventArgs e)
{
try
{
string partNo = cmbPartNo.SelectedItem.ToString();
string searchPartNo = "*" + partNo + "*";
Console.WriteLine("searchPartNo = " + searchPartNo);
string dirPath = @"D:\DataDirectory";
// LINQ query.
var dirs = from dir in Directory.EnumerateDirectories(dirPath,"DataDirectory*", SearchOption.TopDirectoryOnly)
select dir;
// Show results.
foreach (var dir in dirs)
{
string[] subDirs = Directory.GetFiles(dir, searchPartNo, SearchOption.AllDirectories);
Console.WriteLine("subDirs = " + subDirs.Length);
// Remove path information from string.
Console.WriteLine("{0}",
dir.Substring(dir.LastIndexOf("\\") + 1));
}
Console.WriteLine("{0} directories found.",
dirs.Count<string>().ToString());
// Optionally create a List collection.
List<string> workDirs = new List<string>(dirs);
}
catch (UnauthorizedAccessException UAEx)
{
Console.WriteLine(UAEx.Message);
}
catch (PathTooLongException PathEx)
{
Console.WriteLine(PathEx.Message);
}
}
введите описание изображения здесь