Como fazer uma WHERE ... IN ... cláusula no LINQ to SQL?
-
11-07-2019 - |
Pergunta
Bear comigo, estou começando: Como posso selecionar vários elementos usando um WHERE ... IN ... tipo de cláusula como no
select * from orders where orderid in (1, 4, 5)
em LinqToSql? Eu prefiro não ter uma expressão lambda, uma vez que me assusta. Agradecemos antecipadamente!
Solução
LINQ tem "Contém", que é como "IN", mas expressou o contrário -. Um elemento não é "in" um conjunto, um conjunto "contém" um elemento
int[] validIds = { 1, 4, 5 };
var query = from order in db.Orders
where validIds.Contains(order.Id)
select order
Este é mais expressa simplesmente (IMO) com um lambda embora:
int[] validIds = { 1, 4, 5 };
var query = db.Orders.Where(order => validIds.Contains(order.Id));
Eu percebo lambdas são "novo" e, portanto, assustador, até certo ponto, mas é realmente vale a pena agarrando-as com ambas as mãos. Eles são adoráveis.
Outras dicas
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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow