2009-11-13 4 views
1

Salut à tous! Je suis en train de construire une requête qui est quelque chose comme ceci:SubSonic OpenExpression/CloseExpression

Où colonne = « valeur » ET colonne2 = « valeur » ET (colonne3 = « valeur » OU column4 = « valeur »)

Je ce code:

return new Select() 
       .From(LessonChallenge.Schema) 
       .Where(LessonChallenge.ChallengerStatusColumn).IsEqualTo("Finished") 
       .And(LessonChallenge.ChallengeeStatusColumn).IsEqualTo("Finished") 
       .OpenExpression() 
        .And(LessonChallenge.ChallengerAccountIDColumn).IsEqualTo(accountID) 
        .Or(LessonChallenge.ChallengeeAccountIDColumn).IsEqualTo(accountID) 
       .CloseExpression() 
       .OrderDesc("dateCompleted") 
       .Paged(1, numItems) 
       .ExecuteAsCollection<LessonChallengeCollection>(); 

Le problème est que SubSonic ajoute le Et après la parenthèse. Comment puis-je annuler cela?

Répondre

4

Vous devriez être en mesure de le faire:

return new Select() 
      .From(LessonChallenge.Schema) 
      .Where(LessonChallenge.ChallengerStatusColumn).IsEqualTo("Finished") 
      .And(LessonChallenge.ChallengeeStatusColumn).IsEqualTo("Finished") 
      .AndExpression(LessonChallenge.ChallengerAccountIDColumn).IsEqualTo(accountID) 
       .Or(LessonChallenge.ChallengeeAccountIDColumn).IsEqualTo(accountID) 
      .OrderDesc("dateCompleted") 
      .Paged(1, numItems) 
      .ExecuteAsCollection<LessonChallengeCollection>(); 
+0

Merci! Conçu AndExpression existé! – StephenPAdams