LINQ to SQL in y no en

¿Qué hay in y not in igual en LINQ to SQL ?

Por ejemplo

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

¿Qué es igual a la statement anterior en LINQ to SQL?

where .Contains( ) , where .Contains( )

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

O puede tener una lista predefinida como tal:

 int[] ids = {1, 2, 3}; var query = from item in context.items where ids.Contains( item.id ) select item; 

Para el caso ‘NOT’, solo agrega el ‘!’ operador antes de la statement ‘Contiene’.

Estoy confundido por tu pregunta. y not in operar en los campos de la consulta, sin embargo, no está especificando un campo en su consulta de ejemplo. Entonces debería ser algo como:

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

o

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

El equivalente de esas consultas en LINQ to SQL sería algo como esto:

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

y esto:

 List validValues = new List() { 1, 2}; var qry = from item in dataContext.TableName where !validValues.Contains(item.FieldName) select item; 

Por favor, intente esto para SQL no EN

 var v = from cs in context.Sal_Customer join sag in context.Sal_SalesAgreement on cs.CustomerCode equals sag.CustomerCode where !( from cus in context.Sal_Customer join cfc in context.Sal_CollectionFromCustomers on cus.CustomerCode equals cfc.CustomerCode where cus.UnitCode == locationCode && cus.Status == Helper.Active && cfc.CollectionType == Helper.CollectionTypeDRF select cus.CustomerCode ).Contains(cs.CustomerCode) && cs.UnitCode == locationCode && cs.Status == customerStatus && SqlFunctions.DateDiff("Month", sag.AgreementDate, drfaDate) < 36 select new CustomerDisasterRecoveryDetails { CustomerCode = cs.CustomerCode, CustomerName = cs.CustomerName, AgreementDate = sag.AgreementDate, AgreementDuration = SqlFunctions.DateDiff("Month", sag.AgreementDate, drfaDate) }; 

Por favor, intente esto para SQL IN

 context.Sal_PackageOrItemCapacity.Where(c => c.ProjectCode == projectCode && c.Status == Helper.Active && c.CapacityFor.Contains(isForItemOrPackage)).ToList();