Frage

Bär mit mir, ich fange an: Wie kann ich mehrere Elemente mit einem WHERE ... IN ... Art der Klausel wie in

wählen
select * 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!

War es hilfreich?

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
scroll top