2

如何使用 WHERE...IN... 类型的子句选择多个元素,如

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

在 LinqToSql 中?我不想有 lambda 表达式,因为它们吓到我了。

4

2 回答 2

13

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

于 2008-11-25T14:57:41.940 回答
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;
于 2008-11-25T14:58:39.117 回答