2008-11-25 2 views
2

медведь со мной, я начинаю: Как я могу выбрать несколько элементов с помощью WHERE ... IN ... Тип пункта как вКак сделать предложение WHERE ... IN ... в LinqToSql?

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

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

ответ

13

LINQ имеет «Содержит», который похож на «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

ты человек джон, серьезно. спасибо за Ваш ответ. – Mats 2008-11-25 14:59:17

+0

Ooops ... Я полностью забыл о методе расширения Contain в своем ответе ... – 2008-11-25 15:16:06

0
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; 
Смежные вопросы