¿Puedo usar if cláusula con Linq where?Si condición en la cláusula LINQ Where
Respuesta
Sí se puede gustar:
var query = someList.Where(a => a == "something");
if (condition)
{
query = query.Where(b => b == "something else");
}
var result = query.ToList();
Debido Where
está produciendo un IQueryable
, la ejecución se difiere hasta que el ToList
en mi ejemplo para que pueda cadena Where
S, así como todo lo que quieras y luego simplemente ejecutarlo después de haber pasado todas sus condiciones
Hacer uso de WhereIf
extenstion método avaialbe en linq
Ejemplo
if (SearchControlMain.PostingID.HasValue)
query = query.Where(q => q.PostingID == SearchControlMain.PostingID);
en lugar de por encima de ir para el siguiente
query = query.WhereIf(SearchControlMain.CategoryID.HasValue, q => q.CategoryID == SearchControlMain.CategoryID);
Uno de los enlaces está muerto y no existe tal cosa como 'WhereIf' en mi EF. – A1rPun
no estoy seguro de cuál es la pregunta, pero una posible respuesta podría ser:
Sí,
list.Where(item => { if (Foo(item)) return true; else return false; });
Sería una manera complicada de decir algo simple, sin embargo.
cómo esto será posible ¿lo has intentado? –
Sí, al menos funciona con linq-to-objects. –
que es igual a: list.Where (item => Foo (item)); –
No estoy seguro si esto es apropiado pero es bastante útil, puede utilizar IFS con bastante facilidad con condicionales donde cláusulas:
var r = (from p in productinfo.tblproduct
where p.Accountid == accountid
select p);
if (uuf1 != null)
r = r.Where(p => p.UnitUserField1 == uuf1);
if (uuf2!= null)
r = r.Where(p => p.UnitUserField2 == uuf2);
Así que la en la que se modificó la cláusula de acuerdo a lo que está en UUF1 o UUF2 es decir, es posible que solo tengas UUF1 con información, en cuyo caso tomará eso e ignorarás la cláusula UUF2 where, es posible que tengas ambos en los que tomará ambos o podrías no tener nada en UUF1 o 2 y tu cláusula where simplemente tomará el accountid como la cláusula where.
Tuve un escenario como este en el que tuve que comprobar nulo dentro de la lista. Esto es lo que hice.
items = from p in items
where p.property1 != null //Add other if conditions
select p;
// Use items the way you would use inside the if condition
Pero como Kelsey señaló que esto funcionaría también -
items = items.Where(a => a.property1 != null);
var query = someList.Where(a => (someCondition)? a == "something" : true);
así, si 'somecondition' es falso, 'dónde' se evitará.
Esto realmente debería ser la respuesta aceptada –
En mi caso había dos "condicional" en función de claves de búsqueda, por lo que lo hice:
var query = db.Package.Include("SomeThing")
.Where(item => searchString1 == null || searchString1 == "" || item.Contains(searchString1))
.Where(item => searchString2 == null || searchString2 == "" || item.Contains(searchString2));
...
- 1. LINQ condicional cláusula Where
- 2. LINQ multiple where cláusula
- 3. Múltiple cláusula WHERE en Linq
- 4. Cláusula WHERE dinámica en LINQ
- 5. Cláusula dynamic where en Linq para Entidades
- 6. linq a entidades, a where where where cláusula? (interno donde)
- 7. LINQ: añadir condiciones a la cláusula where condicionalmente
- 8. LINQ to SQL MAX en WHERE cláusula
- 9. Límite en la condición WHERE col EN (...)
- 10. LINQ cláusula WHERE usando sentencias if
- 11. SQL Inner Join. Condición ON frente a la cláusula WHERE
- 12. Linq 2 SQL - Genérico cláusula where
- 13. C# Linq where cláusula como variable
- 14. LINQ - actualizar un campo dentro cláusula where
- 15. C# dinámica variable LINQ cláusula Where
- 16. ¿Cómo implemento una cláusula dinámica 'where' en LINQ?
- 17. Linq where cláusula con varias condiciones
- 18. SELECCIONAR COMO en Linq con la cláusula WHERE
- 19. MIN() en la cláusula WHERE
- 20. LINQ Join Where Clause
- 21. Parametrizar la cláusula WHERE?
- 22. Método de extensión en where cláusula en linq a Entidades
- 23. Cómo agregar una cláusula where en una unión linq (lambda)?
- 24. LINQ Donde Y O con la condición
- 25. ¿Cómo combinar cláusula WHERE y GROUP BY en LINQ
- 26. Linq where cláusula con múltiples condiciones y verificación nula
- 27. ¿Cómo añado una cláusula 'where' usando VB.NET y LINQ?
- 28. ¿Cómo ignorar un específico con una cláusula LINQ where?
- 29. JPA where cláusula any
- 30. linq where cláusula y recuento dan como resultado excepción nula
+1 Mejor respuesta de los tres. –
Donde no está produciendo IQueryable, está produciendo IEnumerable. Respuesta incorrecta –
@OmerK ¿Dónde se encuentra el producto IQueryable, si el objeto en el que está ejecutando el método de extensión también es un IQueryable, si lo ejecuta en un IEnumerable, obtendrá un IEnumerable. –