如何在LinqToSql中执行WHERE ... IN ...子句?

Mat*_*ats 2 c# sql clause where linq-to-sql

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

select * from orders where orderid in (1, 4, 5)
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 13

LINQ具有"包含",它类似于"IN"但反过来表示 - 元素不是"在"集合中,集合"包含"元素.

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

这更简单地表达(IMO)与lambda:

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

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