如何在Linq To Sql中执行WHERE ... IN ...子句?

时间:2008-11-25 14:55:43

标签: c# sql linq-to-sql where clause

忍受我,我开始:如何使用WHERE ... IN ...类型的子句选择多个元素,如

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

?因为他们吓唬我,所以我宁愿没有lambda表达。提前谢谢!

2 个答案:

答案 0 :(得分:13)

LINQ有“Contains”,就像“IN”一样,但反过来表示 - 一个元素不是“in”一个集合,一个集合“包含”一个元素。

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

使用lambda更简单地表达(IMO):

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

我意识到lambdas是“新的”,因此在某种程度上是可怕的,但是真的很值得用双手抓住它们。他们很可爱。

答案 1 :(得分: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;