Cómo hacer un WHERE # 8230; IN & # 8230; cláusula en Linq To Sql?
-
11-07-2019 - |
Pregunta
Tenga paciencia conmigo, estoy empezando: ¿Cómo puedo seleccionar múltiples elementos usando un tipo de cláusula WHERE ... IN ... como en
select * from orders where orderid in (1, 4, 5)
en LinqToSql? Prefiero no tener una expresión lambda ya que me asustan. Gracias de antemano!
Solución
LINQ tiene " Contiene " que es como "IN" pero expresado al revés: un elemento no está " en " un conjunto, un conjunto '' contiene '' un elemento.
int[] validIds = { 1, 4, 5 };
var query = from order in db.Orders
where validIds.Contains(order.Id)
select order
Sin embargo, esto se expresa más simplemente (IMO) con una lambda:
int[] validIds = { 1, 4, 5 };
var query = db.Orders.Where(order => validIds.Contains(order.Id));
Me doy cuenta de que las lambdas son "nuevas" y por lo tanto, hasta cierto punto, da miedo, pero vale la pena agarrarlos con ambas manos. Son encantadores.
Otros consejos
int[] arry = new int[] {1,4,5};
var q = from r in orders
where Array.IndexOf(array, orderid) != -1
select r;
o
List<int> lst = new List<int>(new int[] {1,4,5});
var q = from r in orders
where lst.Contains(orderid);
select r;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow