Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LINQ to SQL in and not in

Tags:

c#

linq

.net-3.5

What is in and not in equals in LINQ to SQL?

For example

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

What is equal to the above statement in LINQ to SQL?

like image 680
Pranay Rana Avatar asked Jun 15 '10 17:06

Pranay Rana


2 Answers

You use, where <list>.Contains( <item> )

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

Or you can have a list predefined as such:

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

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

For the 'NOT' case, just add the '!' operator before the 'Contains' statement.

like image 177
Jordan Parmer Avatar answered Oct 10 '22 17:10

Jordan Parmer


I'm confused by your question. in and not in operate on fields in the query, yet you're not specifying a field in your example query. So it should be something like:

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

or

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

The equivalent of those queries in LINQ to SQL would be something like this:

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

and this:

List<int> validValues = new List<int>() { 1, 2};
var qry = from item in dataContext.TableName
          where !validValues.Contains(item.FieldName)
          select item;
like image 21
Randolpho Avatar answered Oct 10 '22 19:10

Randolpho