Как выбрать несколько элементов с помощью предложения типа WHERE ... IN ..., как в
select * from orders where orderid in (1, 4, 5)
в LinqToSql? Я бы предпочел не использовать лямбда-выражения, так как они меня пугают.





LINQ имеет «Содержит», который похож на «IN», но выражается наоборот - элемент не «в» наборе, набор «содержит» элемент.
int[] validIds = { 1, 4, 5 };
var query = from order in db.Orders
where validIds.Contains(order.Id)
select order
Это проще выразить (ИМО) с помощью лямбды:
int[] validIds = { 1, 4, 5 };
var query = db.Orders.Where(order => validIds.Contains(order.Id));
Я понимаю, что лямбды «новые» и поэтому в некоторой степени пугают, но действительно стоит схватить их обеими руками. Они прекрасны.
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;
LINQ to SQL не знает об IndexOf, но знает о Contains.
э, я думаю, у меня все еще есть проблема: я получаю исключение при попытке запустить с помощью foreach над набором результатов. к сожалению, у меня есть только текст исключения на немецком языке, но там написано что-то вроде того, что выражение «Int32 IndexOf [Int32] (Int32 [], Int32)» не может быть распознано.