Wie eine WHERE ... IN ... Klausel in Linq zu tun SQL?
-
11-07-2019 - |
Frage
Bär mit mir, ich fange an: Wie kann ich mehrere Elemente mit einem WHERE ... IN ... Art der Klausel wie in
wählenselect * from orders where orderid in (1, 4, 5)
in LinqToSql? Ich würde es vorziehen, nicht einen Lambda-Ausdruck zu haben, da sie mich erschrecken. Vielen Dank im Voraus!
Lösung
LINQ hat „Enthält“, die wie „IN“ ist aber umgekehrt ausgedrückt -. Ein Element nicht „in“ ein Satz ist ein Satz „enthält“ ein Element
int[] validIds = { 1, 4, 5 };
var query = from order in db.Orders
where validIds.Contains(order.Id)
select order
Dies ist einfacher ausgedrückt (IMO) mit einem Lambda aber:
int[] validIds = { 1, 4, 5 };
var query = db.Orders.Where(order => validIds.Contains(order.Id));
Ich weiß, Lambda-Ausdrücke „neu“ sind und daher zu einem gewissen Grad beängstigend, aber es ist wirklich lohnt sich von ihnen mit beiden Händen greifen halten. Sie sind sehr schön.
Andere Tipps
int[] arry = new int[] {1,4,5};
var q = from r in orders
where Array.IndexOf(array, orderid) != -1
select r;
oder
List<int> lst = new List<int>(new int[] {1,4,5});
var q = from r in orders
where lst.Contains(orderid);
select r;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow