¿Hay algún método en Linq donde pueda usar para construir cadenas de SQL como "... donde (a = 1) OR (a = 2)"?"O" equivalente en Linq Donde() expresión lambda
Respuesta
Por supuesto que puede hacerlo dentro de una cláusula Where (método de extensión). Sin embargo, si necesita construir una consulta compleja de forma dinámica, puede usar un PredicateBuilder.
var query = collection.Where(c => c.A == 1 || c.B == 2);
o utilizando un 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);
¡Buen uso de los predicados! +1 :) –
Esto funcionó muy bien ya que necesitaba construir mi O dependiendo de los valores de los parámetros entrantes - ¡Increíble! – dadwithkids
Muy bueno. Es una pena que esto no esté incluido como una función dentro de .NET como estándar. – maxp
Puede utilizar los operadores booleanos .NET estándar en su única cláusula where:
MyDataSource.Where(data => data.a == 'a' || data.a == 'b')
Creo que esta es la mejor y más simple respuesta. – user1477388
Esta es la respuesta más simple. – Eranda
Una solución podría ser dinámico LINQ:
se utiliza el de todos modos operadores como en C normal ===> || a favor "o" & & de "y", etc.
var something = from s in mycollection
where s.something == 32 ||
s.somethingelse == 45
select s
Prefiero este método, parece más natural – nXqd
en su llamada .Where()
utilizar el 'O' operador booleano estándar, ||
.
var query = items.Where(item => (item == 1 || item == 2));
Toda la llamada Donde hace es una comparación de Boole en cualquier cosa que desee, para que pueda llenarlo con lógica condicional tanto como desee.
Esto está integrado en .net ahora, no estoy seguro si anteriormente no lo era. Dada una consulta Linq existente, puede agregar una cláusula where que tome una matriz de cadenas (SearchStrings) y verificar si alguna de ellas coincide con el objeto de la colección que está buscando. El uso de ToLower() solo asegura que se evite la distinción entre mayúsculas y minúsculas en las consultas SQL.
query.Where(i => SearchStrings.Any(s => i.ToLower().Contains(s.ToLower()));
Usted puede hacer lo mismo para un 'y' predicado, haciendo coincidir todas las palabras en la matriz de objetos de la colección.
query.Where(i => SearchStrings.All(s => i.ToLower().Contains(s.ToLower()));
En este ejemplo i correlaciona a cada objeto en una colección, y s se correlaciona con cada cadena de la matriz searchstrings.
- 1. subconsulta en una expresión lambda o LINQ
- 2. ¿Qué es equivalente a una cláusula entre, para cadenas de comparaciones en LINQ o expresión lambda?
- 3. LINQ/Lambda equivalente de SQL en
- 4. Comparación: LINQ vs LAMBDA Expresión
- 5. Equivalente a SQL Between Statement Uso de Linq o una expresión Lambda
- 6. convierta esta expresión LINQ en Lambda
- 7. C# Joins/Donde con Linq y Lambda
- 8. Agrupación de objetos con expresión linq o lambda
- 9. consulta SQL a la expresión lambda o LINQ
- 10. ¿Es Linq o Lambda?
- 11. Construir dinámicamente la expresión de Linq Lambda
- 12. concatenar dos valores de columna en LINQ Lambda Expresión
- 13. Cómo "dejar" en expresión lambda?
- 14. LINQ to SQL: reutilizar la expresión lambda
- 15. Cómo insertar una lambda en una expresión LINQ consulta declarativa
- 16. Expresión lambda en C#
- 17. Delegado de MethodInvoke o expresión lambda
- 18. conversión de expresión lambda en un árbol de expresión
- 19. Expresión Lambda
- 20. Sintaxis de la expresión Lambda
- 21. Expresión lambda en Powershell
- 22. Seleccionar de la lista Lambda o linq
- 23. Estándar de nomenclatura de LINQ - Expresión de Lambda
- 24. Expresión Lambda versus Statement Lambda
- 25. ¿Se puede invertir una cadena en una línea con LINQ o una expresión LAMBDA
- 26. condicional en LINQ DONDE
- 27. LINQ Donde Y O con la condición
- 28. ¿Cómo seleccionar 'nuevo' dentro de la expresión Linq lambda?
- 29. lambda Expresión como propiedad
- 30. OrdenarPor descendente en la expresión Lambda?
Supongo que sabes cómo usar '||' y quieres algo dinámico, como 'a = a.where (hour => hour <20); if (fin de semana) a = a.where (hora => hora> 6); '. Es posible que desee expresarlo con mayor claridad ... – Kobi