Eu tenho uma lista de orders
.
Desejo selecionar com orders
base em um conjunto de status de pedidos.
Então essencialmente select orders where order.StatusCode in ("A", "B", "C")
// Filter the orders based on the order status
var filteredOrders = from order in orders.Order
where order.StatusCode.????????("A", "B", "C")
select order;
Respostas:
Seus códigos de status também são uma coleção, então use
Contains
:ou na sintaxe da consulta:
fonte
fonte
Nota: este é o LINQ to objects, não tenho 100% de certeza se ele funciona no LINQ to entidades e não tenho tempo para verificá-lo agora. De fato, não é muito difícil traduzi-lo para x em [A, B, C] mas você deve verificar por si mesmo.
Então, em vez de Contém como uma substituição do ???? No seu código, você pode usar Qualquer um que seja mais LINQ-uish:
É o oposto do que você sabe do SQL, é por isso que não é tão óbvio.
Obviamente, se você preferir uma sintaxe fluente, aqui está:
Aqui, novamente, vemos uma das surpresas do LINQ (como Joda-speech, que coloca select no final). No entanto, é bastante lógico nesse sentido que ele verifique se pelo menos um dos itens (que é algum ) em uma lista (conjunto, coleção) corresponde a um único valor.
fonte
Tente com
Contains
função;fonte
Apenas tome cuidado,
.Contains()
ele corresponderá a qualquer substring, incluindo a string que você não espera. Por exemplo.new[] { "A", "B", "AA" }.Contains("A")
retornará os dois A e AA que você pode não querer. Eu fui mordido por ele..Any()
ou.Exists()
é uma escolha mais segurafonte