2009-04-28 11 views
2

J'essaie d'effectuer la requête suivante dans LLBL et je n'ai pas beaucoup de chance.LLBL: Supprimer Where NOT IN

DELETE FROM dbo.MyTable WHERE MyTableId NOT IN ('39', '43', '44') 

Essentiellement, je suis à ce point:

private static void Delete(MyTableCollection newRecs) 
{ 
    PredicateExpression filter = new PredicateExpression(); 
    MyTableCollection allRecords = new MyTableCollection(); 

    filter.Add(new FieldCompareSetPredicate(
        MyTableFields.MyTableId, 
        MyTableFields.MyTableId, 
        SetOperator.In, null, null, string.Empty, 0, null, true)); 

    allRecords.DeleteMulti(filter); 
} 

Je ne sais pas si le code ci-dessus est correct, mais je ne comprends pas comment je peux fournir newRecs que la collection des enregistrements à utiliser dans ma clause IN. Suis-je même proche?

Toute aide serait grandement appréciée. Je constate que j'ai utilisé des ID statiques dans mon exemple SQL, mais j'essaie vraiment d'utiliser les ID stockés dans le paramètre newRecs.

Répondre

4

Pour que le "pas dans" fonctionne, vous devez passer un certain type de tableau. Essayez quelque chose comme ceci:

List<int> idsNotToDelete = new List<int>(); 
foreach (MyTableEntity ent in newRecs) 
{ 
    idsNotToDelete.Add(ent.MyTableId); 
} 
PredicateExpression filter = new PredicateExpression(MyTableFields.MyTableId != idsNotToDelete) 
MyTableCollection allRecords = new MyTableCollection(); 
allRecords.DeleteMulti(filter); 
Questions connexes