Tengo una lista de orders
.
Quiero seleccionar en orders
función de un conjunto de estados de pedido.
Entonces esencialmente 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;
Respuestas:
Sus códigos de estado también son una colección, así que use
Contains
:o en sintaxis de consulta:
fuente
fuente
NB: esto es LINQ para objetos, no estoy 100% seguro si funciona en LINQ para entidades, y no tengo tiempo para verificarlo ahora. De hecho, no es demasiado difícil traducirlo a x en [A, B, C], pero debe verificarlo usted mismo.
Entonces, en lugar de Contiene como un reemplazo del ???? en tu código puedes usar Any, que es más LINQ-uish:
Es lo opuesto a lo que sabes de SQL, por eso no es tan obvio.
Por supuesto, si prefiere una sintaxis fluida aquí es:
Aquí nuevamente vemos una de las sorpresas de LINQ (como Joda-speech que pone select al final). Sin embargo, es bastante lógico en este sentido que verifique si al menos uno de los elementos (que es alguno ) en una lista (conjunto, colección) coincide con un valor único.
fuente
Probar con la
Contains
función;fuente
Solo tenga cuidado,
.Contains()
coincidirá con cualquier subcadena, incluida la cadena que no espera. Por ej.new[] { "A", "B", "AA" }.Contains("A")
le devolverá tanto A como AA que quizás no desee. He sido mordido por eso..Any()
o.Exists()
es una opción más segurafuente