Я знаю, почему следующий код не работает, когда список «excl» содержит более одной строки. Это потому, что, поскольку каждая строка оценивается в лямбда, теперь она включает все, что было исключено в предыдущей итерации «x». Мой вопрос: как мне заставить его правильно исключить несколько элементов в конечном результате?Как исключить каталоги из IEnumerable <DirectoryInfo>
var di = new DirectoryInfo(@"\\192.168.1.10\e$");
var excl = new List<string>();
excl.Add("Temp");
excl.Add("VSS");
var dirs = from d in di.GetDirectories()
where (d.Attributes & FileAttributes.System) != FileAttributes.System
select d;
dirs = excl
.SelectMany(x => from d in dirs
where !d.FullName.ToLowerInvariant().Contains(x.ToLowerInvariant())
select d)
.Distinct().ToArray();
Похоже, Крис Шайн бить вас на минуту. Я изучал документацию Intersect <> и читал хэш-коды, но я знал, что для этой проблемы будет однострочное решение. Этот код предназначен только для частичного соответствия пути к каталогу, а не для точного соответствия. – user1197862
Я избил его на минутку, но все в порядке ;-) – BrokenGlass
Вы правы, я шел первым, показывая его. Это был мой первый вопрос здесь, не понимал, что он показывает ответы, самые новые до самых старых, хотя они четко пронумерованы! Я переключу ответы. – user1197862