LINQ к SQL в а не в

Что in и not in равняется в LINQ SQL?

Например,

select * from table in ( ...)
and 
select * from table not in (..)

Что равно вышеупомянутому оператору в LINQ к SQL?

10
задан Marcel 7 July 2016 в 08:58
поделиться

2 ответа

Вы используете, , где .Contains ()

var myProducts = from p in db.Products
                 where productList.Contains(p.ProductID)
                 select p;

Или вы можете иметь заранее определенный список как таковой:

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

var query = from item in context.items
            where ids.Contains( item.id )
            select item;

Для случая «НЕ», просто добавьте "!" перед оператором Contains.

22
ответ дан 3 December 2019 в 15:05
поделиться

Я запутался в вашем вопросе. in и not in действуют на поля в запросе, но в вашем примере запроса вы не указываете поля. Поэтому должно быть что-то вроде:

select * from table where fieldname in ('val1', 'val2')

или

select * from table where fieldname not in (1, 2)

Эквивалент этих запросов в 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;

и этого:

List<int> validValues = new List<int>() { 1, 2};
var qry = from item in dataContext.TableName
          where !validValues.Contains(item.FieldName)
          select item;
8
ответ дан 3 December 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: