Есть ли метод в Linq, где вы можете использовать для построения строк SQL, таких как «... где (a = 1) ИЛИ (a = 2)»?«Или» эквивалент в Linq Где() выражение lambda
ответ
Вы, конечно, можете это сделать в ИНЕКЕ (метод расширения). Если вам нужно построить сложный запрос динамически, вы можете использовать PredicateBuilder.
var query = collection.Where(c => c.A == 1 || c.B == 2);
Или используя PredicateBuilder
var predicate = PredicateBuilder.False<Foo>();
predicate = predicate.Or(f => f.A == 1);
if (allowB)
{
predicate = predicate.Or(f => f.B == 1);
}
var query = collection.Where(predicate);
Приятное использование предикатов! +1 :) –
Это отлично поработало, так как мне нужно было построить мой или зависящий от значений входящих параметров - Awesome! – dadwithkids
Очень круто. Это позор, который не включен как функция внутри .NET в качестве стандарта. – maxp
Вы можете использовать стандартные .NET логические операторы в ваш единственный пункт, где:
MyDataSource.Where(data => data.a == 'a' || data.a == 'b')
Я думаю, что это лучший и самый простой ответ. – user1477388
Это самый простой ответ. – Eranda
Одним из решений может быть динамической Linq:
Вы использовать все равно операторы, как в обычном C# ===> || за «или» & & за «и» и т.д.
var something = from s in mycollection
where s.something == 32 ||
s.somethingelse == 45
select s
Я предпочитаю этот метод, он выглядит более естественно – nXqd
в вашем .Where()
вызова использовать стандартный Boolean 'или' оператора, ||
.
var query = items.Where(item => (item == 1 || item == 2));
Все где вызов делает логическое сравнение на все, что вы хотите, так что вы можете заполнить его столько условной логики, как вы хотите.
Это встроено в .net сейчас, не уверен, что раньше это не было. Учитывая существующий запрос Linq, вы можете добавить предложение where, которое принимает массив строк (SearchStrings), и проверить, соответствует ли любой из них любому объекту в коллекции, которую вы ищете. Использование ToLower() просто гарантирует, что вы избегаете чувствительности к регистру в SQL-запросах.
query.Where(i => SearchStrings.Any(s => i.ToLower().Contains(s.ToLower()));
Вы можете сделать то же самое для в «и» предикат, сопоставляя все слова в массиве на объект коллекции.
query.Where(i => SearchStrings.All(s => i.ToLower().Contains(s.ToLower()));
В этом примере я коррелирует с каждым объектом в коллекции, а также с коррелирует с каждой строкой в массиве SearchStrings.
- 1. Запрос Linq или выражение Lambda?
- 2. Выражение Linq & Lambda в VB.Net
- 3. Как отладить выражение Linq Lambda?
- 4. Как добавить условие в выражение linq lambda
- 5. Стандарт наименования LINQ - выражение Lambda
- 6. Lambda Выражение LINQ Выберите элементы
- 7. выражение Lambda C# Союз Где
- 8. Как преобразовать этот запрос sql в выражение Lambda или LINQ
- 9. Как преобразовать этот SQL в выражение LINQ или Lambda?
- 10. Как преобразовать этот запрос SQL в выражение LINQ или Lambda?
- 11. выражение lambda для условия ИЛИ в Linq для объекта
- 12. Эквивалент SQL между заявлением с использованием выражения Linq или Lambda
- 13. Groovy эквивалент для Java 8 выражение Lambda
- 14. Преобразование строки в выражение Linq lambda
- 15. преобразовать это выражение LINQ в Lambda
- 16. Linq Lambda выражение преобразуется в SSIS
- 17. Преобразуйте этот LINQ в выражение Lambda?
- 18. Динамическое выражение linq/lambda из запроса
- 19. C# Linq через XML => Lambda выражение
- 20. Как написать выражение VB.Net Lambda
- 21. Linq Выражение из Lambda: указать параметр явно
- 22. динамический linq где выражение
- 23. Как написать выражение Linq или Lambda для вложенных коллекций
- 24. Эквивалент LINQ в Java 8
- 25. Linq Query Где() SQL% эквивалент
- 26. Как выглядит лямбда? (не выражение lambda linq)
- 27. Linq Lambda выражение для скалярного значения (макс.)
- 28. Выражение LINQ/LAMBDA для кода ниже
- 29. SQL Query to LINQ выражение Lambda
- 30. выражение .где Lambda загрузки всей таблица
Я предполагаю, что вы знаете, как использовать '||' и хотите что-то динамическое, например 'a = a.where (hour => hour <20); если (в выходные) a = a.where (час => час> 6); '. Вы можете заявить, что более четко ... – Kobi