我正在尝试在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。
答案 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);