2009-04-28 3 views
2

LLBL에서 다음 쿼리를 수행하려고하는데 많은 행운이 없습니다.LLBL : NOT IN Where

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