2

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

1 回答 1

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);
于 2009-05-07T14:54:44.513 回答