NB: questo è LINQ to Objects, io non sono sicuro al 100% se lavorare in LINQ to entità, e non hanno tempo di controllare subito. In realtà non è troppo difficile tradurlo in x in [A, B, C] ma devi controllare tu stesso.
Quindi, invece di Contiene in sostituzione del ???? nel codice è possibile utilizzare Qualsiasi che è più LINQ-uish:
// Filter the orders based on the order status
var filteredOrders = from order in orders.Order
where new[] { "A", "B", "C" }.Any(s => s == order.StatusCode)
select order;
E 'l'opposto di ciò che si sa da SQL questo è il motivo per cui non è così ovvio.
Naturalmente, se si preferisce la sintassi fluente qui è:
var filteredOrders = orders.Order.Where(order => new[] {"A", "B", "C"}.Any(s => s == order.StatusCode));
Qui vediamo di nuovo una delle sorprese LINQ (come Joda-speech che mette selezionare alla fine). Tuttavia è abbastanza logico in questo senso che controlli se almeno uno degli elementi (ovvero qualsiasi) in un elenco (set, raccolta) corrisponda a un singolo valore.
fonte
2015-07-26 15:58:51
uso Contiene la funzione – Zaki
Grazie a tutto ciò che ha risposto così rapidamente. Esp per la soluzione lambda. Non ho ancora fatto nulla con le espressioni lambda. Presumo che farei un NOT contenente usando (o =>! (Statuses.Contains (o.OrderHeaderOrderStatusCode)))) – MartinS