LINQ to SQL in和not in

Pra*_*ana 10 c# linq .net-3.5

LINQ to SQL中有什么innot in等于什么 ?

例如

select * from table in ( ...)
and 
select * from table not in (..)
Run Code Online (Sandbox Code Playgroud)

什么等于LINQ to SQL中的上述语句?

Jor*_*mer 22

你用, where <list>.Contains( <item> )

var myProducts = from p in db.Products
                 where productList.Contains(p.ProductID)
                 select p;
Run Code Online (Sandbox Code Playgroud)

或者您可以预定义列表:

int[] ids = {1, 2, 3};

var query = from item in context.items
            where ids.Contains( item.id )
            select item;
Run Code Online (Sandbox Code Playgroud)

对于'NOT'的情况,只需添加'!' 'Contains'语句之前的运算符.


Ran*_*pho 8

我对你的问题感到困惑.in并对not in查询中的字段进行操作,但您没有在示例查询中指定字段.所以它应该是这样的:

select * from table where fieldname in ('val1', 'val2')
Run Code Online (Sandbox Code Playgroud)

要么

select * from table where fieldname not in (1, 2)
Run Code Online (Sandbox Code Playgroud)

在LINQ to SQL中等效的那些查询将是这样的:

List<string> validValues = new List<string>() { "val1", "val2"};
var qry = from item in dataContext.TableName
          where validValues.Contains(item.FieldName)
          select item;
Run Code Online (Sandbox Code Playgroud)

还有这个:

List<int> validValues = new List<int>() { 1, 2};
var qry = from item in dataContext.TableName
          where !validValues.Contains(item.FieldName)
          select item;
Run Code Online (Sandbox Code Playgroud)