¿Existe un método en Linq donde pueda usar para construir cadenas SQL como "... donde (a = 1) OR (a = 2)"?
.net
linq
where-clause
dstr
fuente
fuente
||
y quieres algo dinámico, comoa=a.where(hour=> hour<20); if(weekend) a=a.where(hour=> hour>6);
. Es posible que desee decirlo más claramente ...Respuestas:
Ciertamente puede hacerlo dentro de una cláusula Where (método de extensión). Sin embargo, si necesita crear una consulta compleja de forma dinámica, puede utilizar un PredicateBuilder .
O usando un PredicateBuilder
fuente
Puede usar los operadores booleanos estándar de .NET en su cláusula where única:
fuente
Usas los mismos operadores que en C # ===> || para "o" && para "y", etc.
fuente
en su
.Where()
llamada se debe usar el estándar de Boole 'O' operador,||
.Todo lo que hace la llamada Where es una comparación booleana de cualquier cosa que desee, por lo que puede completarla con tanta lógica condicional como desee.
fuente
Si no conoce el recuento de parámetros, puede usar esto:
Data de muestra
Código
fuente
Esto está integrado en .net ahora, no estoy seguro si antes no lo estaba. 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 se asegura de evitar la distinción entre mayúsculas y minúsculas en las consultas SQL.
Puede hacer lo mismo para un predicado "y" haciendo coincidir todas las palabras de la matriz con el objeto de la colección.
En este ejemplo, i se correlaciona con cada objeto de una colección y s se correlaciona con cada cadena de la matriz SearchStrings.
fuente