注意:これはオブジェクトへの LINQ です。エンティティへの LINQ で機能するかどうかは 100% 確信が持てず、今は確認する時間がありません。実際、[A, B, C] の x に変換するのはそれほど難しくありませんが、自分で確認する必要があります。
そのため、 Containsの代わりに???? の代わりに あなたのコードでは、より LINQ っぽいAnyを使用できます。
// 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;
これは、SQL から知っていることとは逆です。これが、それほど明白ではない理由です。
もちろん、ここで流暢な構文を好む場合は、次のとおりです。
var filteredOrders = orders.Order.Where(order => new[] {"A", "B", "C"}.Any(s => s == order.StatusCode));
ここでも LINQ の驚きの 1 つが見られます (select を最後に置く Joda スピーチなど)。ただし、この意味では、リスト (セット、コレクション) 内の項目 (つまりany ) の少なくとも 1 つが単一の値と一致するかどうかをチェックすることは非常に論理的です。