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!

Foi útil?

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
scroll top