LLBL:删除不在的地方

时间:2009-04-28 19:27:33

标签: .net llblgenpro

我正在尝试在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。

1 个答案:

答案 0 :(得分: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);