Как использовать LINQ, чтобы найти, содержит ли какое-либо значение в ResultPropertyCollection определенную подстроку?
Справочная информация. После переименования моей фирмы работодателя я хочу проверить, все ли пользователи имеют новый псевдоним электронной почты, который указан в Active Directory как proxyAddresses.
Прямой доступ к отдельным значениям внутри ResultPropertyCollection работает просто отлично, например так:
DirectorySearcher mySearcher = new DirectorySearcher(mySearchRoot, myFilter, myPropertiesList);
myResults = mySearcher.FindAll();
var query = from SearchResult myResult in myResults
where (myResult.Properties["proxyAddresses"][0].ToString().Contains ("WeNeedThis.com"))
select myResult;
Но мне не удается найти все значения в коллекции. Кажется, я не могу понять, какой тип переменной является правильным:
where (from WhatType? myAddress in myResult.Properties["proxyAddresses"]
where (myAddress.Contains("WeNeedThis.com"))
select myAddress)
Как мне установить предложение where, чтобы оно обнаруживало вхождение строки поиска в любое значение proxyAddresses?
Ответ: Оказывается, это правильное предложение where:
where ( ( from String myAddress in myResult.Properties["proxyAddresses"]
where myAddress.Contains("WeNeedThis.com")
select myAddress).ToList().Count == 0)
Были переплетены две ошибки: внешнему выражению where требуется логический результат от результата внутреннего выбора, который достигается с помощью .ToList (). Count == 0.
Тип переменной диапазона действительно String = myResult.Properties ["proxyAddresses"] [0] .GetType (), хотя коллекция не имеет прямых членов String. Я неправильно интерпретировал полученную ошибку компилятора.