Как сделать предложение WHERE ... IN ... в LinqToSql? - PullRequest
2 голосов
/ 25 ноября 2008

Терпите меня, я начинаю: Как выбрать несколько элементов, используя тип WHERE ... IN ..., как в

select * from orders where orderid in (1, 4, 5)

в LinqToSql? Я бы предпочел не иметь лямбда-выражения, потому что они меня пугают. Заранее спасибо!

Ответы [ 2 ]

13 голосов
/ 25 ноября 2008

LINQ имеет «Contains», которое похоже на «IN», но выражается наоборот: элемент не находится «в» наборе, набор «содержит» элемент.

int[] validIds = { 1, 4, 5 };
var query = from order in db.Orders
            where validIds.Contains(order.Id)
            select order

Это проще выразить (IMO) с помощью лямбды:

int[] validIds = { 1, 4, 5 };
var query = db.Orders.Where(order => validIds.Contains(order.Id));

Я понимаю, что лямбды "новы" и поэтому в какой-то степени пугающие, но действительно стоит захватить их обеими руками. Они прекрасны.

0 голосов
/ 25 ноября 2008
int[] arry = new int[] {1,4,5};

var q = from r in orders
        where Array.IndexOf(array, orderid) != -1
        select r;

или

List<int> lst = new List<int>(new int[] {1,4,5});
var q = from r in orders
        where lst.Contains(orderid);
        select r;
...