Написание LINQ Query для поиска во всех подкаталогах? - PullRequest
1 голос
/ 05 октября 2010

У меня есть папка решения, в которой я собираю все .dll и сохраняю их в виде списка массивов. Я должен искать все подкаталоги. Как написать запрос LINQ?

var r = dir.GetFiles("*.dll")
           .Where<FileInfo>(i => i.Name.StartsWith("SAMPLE"))
           .ToList();

Это правильно? Например, я начинаю 20 dll с именем «SAMPLE»

Ответы [ 3 ]

8 голосов
/ 05 октября 2010

Я бы порекомендовал вам использовать метод EnumerateFiles :

var r = Directory
    .EnumerateFiles(@"c:\work", "*.dll", SearchOption.AllDirectories)
    .Where(file => file.StartsWith("SAMPLE"))
    .ToList();

или даже лучше использовать шаблон подстановочного знака для фильтрации вместо фильтрации в памяти:

var r = Directory
    .EnumerateFiles(@"c:\work", "SAMPLE*.dll", SearchOption.AllDirectories)
    .ToList();
0 голосов
/ 05 октября 2010

Да, это правильно.

Я быстро создал подобный код, чтобы проверить себя, и он работает.

DirectoryInfo dir = new DirectoryInfo(@"C:\Test");
var files = dir.GetFiles("*.jpg").Where<FileInfo>(i => i.Name.StartsWith("Tet")).ToList();

files.ForEach(file => Console.WriteLine(file.Name));
0 голосов
/ 05 октября 2010

Да, ваш LINQ правильный.Это должно работать нормально.Небольшая поправка: вам не нужен параметр tye.(Компилятор может сделать вывод.)

var list = dir.GetFiles("*.dll").Where(i => i.Name.StartsWith("SAMPLE")).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...