2010-06-15 8 views

Répondre

21

Vous utilisez, where <list>.Contains(<item>)

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

Ou vous pouvez avoir une liste prédéfinie en tant que tel: '!

var ids = {1, 2, 3}; 

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

Pour le 'NON' cas, il suffit d'ajouter la opérateur avant l'instruction "Contient".

+0

Comment gérez-vous si elle est dans une liste? IN ('a', 'b', 'c') – DOK

+0

@DOK il vient de mentionner comment vous gérez si c'est dans une liste. – Randolpho

+0

Voir mon exemple mis à jour. –

8

Je suis confus par votre question. in et not in fonctionnent sur les champs de la requête, mais vous ne spécifiez pas de champ dans votre exemple de requête. Il doit donc être quelque chose comme:

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

ou

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

L'équivalent de ces serait quelque chose comme requêtes dans LINQ to SQL ceci:

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

et ceci:

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

S'il vous plaît Essayez ceci pour SQL ne sont pas 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) 
    }; 

S'il vous plaît Essayez ceci pour SQL

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