Comment faire une clause WHERE… IN… dans Linq To Sql?
-
11-07-2019 - |
Question
Soyez prudent, je commence: comment sélectionner plusieurs éléments à l'aide d'un type de clause WHERE ... IN ... comme dans
select * from orders where orderid in (1, 4, 5)
dans LinqToSql? Je préférerais ne pas avoir une expression lambda car ils me font peur. Merci d'avance!
La solution
LINQ a " Contains " qui ressemble à " IN " mais exprimé à l’inverse: un élément n’est pas "dans" un ensemble, un ensemble "contient" un élément.
int[] validIds = { 1, 4, 5 };
var query = from order in db.Orders
where validIds.Contains(order.Id)
select order
Ceci est plus simplement exprimé (IMO) avec un lambda:
int[] validIds = { 1, 4, 5 };
var query = db.Orders.Where(order => validIds.Contains(order.Id));
Je me rends compte que les lambdas sont "nouveaux". et donc effrayant dans une certaine mesure, mais il vaut vraiment la peine de les saisir à deux mains. Ils sont adorables.
Autres conseils
int[] arry = new int[] {1,4,5};
var q = from r in orders
where Array.IndexOf(array, orderid) != -1
select r;
ou
List<int> lst = new List<int>(new int[] {1,4,5});
var q = from r in orders
where lst.Contains(orderid);
select r;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow