В другом posting: Does Linq-To-Sql support composable queries была дискуссия о том, как составлять/concat где клаузулы динамически. Это, по-видимому, выполняется с помощью «И» (то есть первое предложение where, а второе предложение where объединяется с AND). Мне интересно, есть ли способ составить запросы Linq с помощью OR.Поддерживает ли LINQ поддержку «ИЛИ запросов»?
Пример:
var people = from p in Person
where p.age < 18
select p
var otherPeople = from p in people
where p.firstName equals "Daniel"
select p
Это дает людям с первым названием «Daniel», и которые находятся под 18. Я ищу синтаксисом, чтобы присоединиться к этим, чтобы найти людей, которые имеют первое имя " Даниил "или находятся под 18.
Примечание: Я использую службы данных ADO.net, поэтому у меня нет. Содержит() для меня.
EDIT: The Union Suggestion (Garry Shutler) - это именно то, что я ищу по функциональности. Я побежал на две возможные проблемы с ним:
- Похоже, что бы сделать несколько хитов базы данных, если я должен был сделать третье условие (союз, кажется, принять IEnumerable в качестве параметра) - я надеялся построить несколько операторов AND и OR в коде, а затем выполните один запрос.
- Союз не поддерживается ADO.Net Data Services (очень неутешительными)
Predicate Builder не отображается для поддержки службы данных ADO.NET? Выполнение приведенных выше результатов: «Ошибка перевода выражения Linq в URI: выражение ((False или Invoke (m => m.FirstName =« Daniel »), [10007])) или Invoke (p => (p.age < 18), [10007])) не поддерживается ». – ChrisHDog 2008-12-15 23:23:00
Фактически это означает, что ошибка в Linq для ADO.NET Data Services, поскольку она не поддерживает или выражения. – 2008-12-16 01:18:13