c # исключить дефис из directory.getdirectories - PullRequest
2 голосов
/ 29 декабря 2010

Я хотел бы использовать метод Directory.GetDirectories, чтобы получить все каталоги с некоторыми исключениями.В частности, мне нужно исключить каталоги, в которых есть дефис.Я уже обнаружил, что регулярные выражения не работают в качестве шаблонов поиска.Какой шаблон поиска я бы использовал?

Ответы [ 3 ]

3 голосов
/ 29 декабря 2010

Может быть, достаточно запроса linq?

    //query notation
    var result = from d in Directory.GetDirectories(path) 
                 where !d.Contains("-")
                 select d;
    //'dot' notation
    var result2 = Directory.GetDirectories(path)
                  .Where(dir => !dir.Contains("-"));

РЕДАКТИРОВАТЬ (подробное объяснение)

Решение выше называется "LINQ to Objects" .Это способ запроса коллекций, которые реализуют интерфейс IEnumerable или IEnumerable<T>.Метод GetDirectories возвращает Array строки, которая может использовать Linq.В интернете много всего о Линке.Чтобы увидеть всю мощь Linq, пролистайте эти примеры на MSDN: 101 Linq Samples .Кстати, Linq полезен для извлечения данных из различных источников, таких как XML, базы данных и т. Д.

2 голосов
/ 29 декабря 2010
System.Collections.ObjectModel.Collection<string> resultDirs=new System.Collections.ObjectModel.Collection<string> ();
            foreach (string  dir in System.IO.Directory.GetDirectories("path"))
            {
                if (!dir.Contains("-")) resultDirs.Add(dir);
            }
1 голос
/ 29 декабря 2010

Не LINQ способ:

    static void Main(string[] args)
    {

        string StartingPath = "c:\\";

        List<string> mydirs = new List<string>(); // will contains folders not containing "-"

        foreach (string d in Directory.GetDirectories(StartingPath))
        {                               
            if (!(d.Contains("_")))
            {
                mydirs.Add(d);
            }                

            foreach (string dir in mydirs)
            {
                Console.WriteLine(dir);
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...