Come fare un WHERE # 8230; IN & # 8230; clausola in Linq To Sql?
-
11-07-2019 - |
Domanda
Orso con me, sto iniziando: come posso selezionare più elementi usando una clausola WHERE ... IN ... come in
select * from orders where orderid in (1, 4, 5)
in LinqToSql? Preferirei non avere un'espressione lambda poiché mi spaventano. Grazie in anticipo!
Soluzione
LINQ ha " Contiene " che è come " IN " ma espresso al contrario: un elemento non è " in " un set, un set " contiene " un elemento.
int[] validIds = { 1, 4, 5 };
var query = from order in db.Orders
where validIds.Contains(order.Id)
select order
Questo è più semplicemente espresso (IMO) con un lambda:
int[] validIds = { 1, 4, 5 };
var query = db.Orders.Where(order => validIds.Contains(order.Id));
Mi rendo conto che i lambda sono "nuovi" e quindi spaventoso in una certa misura, ma vale davvero la pena afferrarli con entrambe le mani. Sono adorabili.
Altri suggerimenti
int[] arry = new int[] {1,4,5};
var q = from r in orders
where Array.IndexOf(array, orderid) != -1
select r;
o
List<int> lst = new List<int>(new int[] {1,4,5});
var q = from r in orders
where lst.Contains(orderid);
select r;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow