如何使用 WHERE...IN... 类型的子句选择多个元素,如
select * from orders where orderid in (1, 4, 5)
在 LinqToSql 中?我不想有 lambda 表达式,因为它们吓到我了。
如何使用 WHERE...IN... 类型的子句选择多个元素,如
select * from orders where orderid in (1, 4, 5)
在 LinqToSql 中?我不想有 lambda 表达式,因为它们吓到我了。
LINQ 有“包含”,它类似于“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 是“新的”,因此在某种程度上很可怕,但用双手抓住它们真的很值得。他们很可爱。
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;