2009-04-28 50 views
2

我試圖在LLBL中執行以下查詢,我沒有太多的運氣。LLBL:刪除不在

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

從本質上講,我到了這一點:

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); 
} 

我不知道,如果上面的代碼是正確的,但我不明白我怎麼能提供newRecs爲收藏記錄在我的IN子句中使用。我甚至關閉?

任何幫助將不勝感激。

注意:我意識到我在我的SQL示例中使用了靜態ID,但我真的試圖使用存儲在newRecs參數中的ID。

回答

4

爲了讓「不在」工作,你必須通過某種數組。試試這樣的:

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);