C# 如何做一个WHERE…IN。。。LinqToSql中的子句?

C# 如何做一个WHERE…IN。。。LinqToSql中的子句?,c#,sql,linq-to-sql,where-clause,C#,Sql,Linq To Sql,Where Clause,如何使用WHERE…IN…选择多个元素。。。中的子句类型 select * from orders where orderid in (1, 4, 5) 在LinqToSql中?我不希望使用lambda表达式,因为它们会吓到我。LINQ有“Contains”,类似于“IN”,但表达方式相反-元素不是“IN”集合,集合“包含”元素 int[] validIds = { 1, 4, 5 }; var query = from order in db.Orders where

如何使用WHERE…IN…选择多个元素。。。中的子句类型

select * from orders where orderid in (1, 4, 5)
在LinqToSql中?我不希望使用lambda表达式,因为它们会吓到我。

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));
我意识到lambda是“新的”,因此在某种程度上是可怕的,但它真的很值得用双手抓住它们。它们很可爱

int[] arry = new int[] {1,4,5};

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

listlst=newlist(newint[]{1,4,5});
var q=订单中的r
其中lst.Contains(orderid);
选择r;

嗯,我想我仍然有一个问题:我在结果集上尝试使用foreach运行时遇到异常。不幸的是,我只有一个德语异常文本,但它说的是类似于“Int32 IndexOf[Int32](Int32[],Int32)”的表达式无法识别。LINQ to SQL不知道IndexOf,但知道Contains。
List<int> lst = new List<int>(new int[] {1,4,5});
var q = from r in orders
        where lst.Contains(orderid);
        select r;