Я работаю над тем, что запрашивает базу данных в зависимости от значений, вводимых пользователем. Например, пользователь может найти страну (возможно, «Au»), и все страны, содержащие «Au», получат возврат.Число Ors на основе списка
Проблема в том, что мне нужно добавить кучу «или» заявлений в предикат для достижения этого результата, но понятия не имею, как это сделать.
Прямо сейчас, у меня есть
List<int> ids;
ids = (from d in DTDC.Countries
where d.Name.ToLower().Contains(country.ToLower())
select d.CountryID).ToList();
var SearchPredicate = PredicateBuilder.True<DLC>();
// Example
searchPredicate = searchPredicate.And(c => c.CountryID == 0 || c.CountryID == 1);
Поэтому мне нужно генерировать
searchPredicate = searchPredicate.And(c => c.CountryID == 0 || c.CountryID == 1);
это утверждение в зависимости от значений в списке, возвращаемом из моего запроса LINQ.
Например, если список имеет значения 0, 1, 7, то запрос должен быть
searchPredicate = searchPredicate.And(c => c.CountryID == 0 || c.CountryID == 1 || || c.CountryID == 7);
Надеюсь, тот достаточно ясно, для кого-то, чтобы понять, что я пытаюсь сделать :)
Потому что цифры не обязательно последовательны. Например, возвращаемые идентификаторы могут быть идентификаторами 0 и 17, что означает, что это должно быть c => c.CountryID == 0 || c.CountryID == 17 У меня также есть что-то отдельное для обработки одного ID. Решение, которое я ищу здесь, для нескольких. – Wraiyth
Хорошо, я неправильно прочитал ваш пост, когда вы сказали, что это зависит от размера списка. Вы хотите отфильтровать, где c.CountryID найден в одной из стран, возвращенных в идентификаторы? – Rob
Да, точно.Таким образом, список может содержать значения 0, 1, 5, 10, и мне нужны * все * те, которые включены в мой оператор. И насколько мне далеко, все они должны быть в отдельном предикате, я не могу добавить один для каждого ID (по крайней мере, я его пробовал, и он не работал) – Wraiyth