Bonjour,
Je suis en train de développer une classe me retournant un classement sportif. Pour se faire, je récupère dans une base de données :
- une liste d'équipes engagées
- une liste de matchs
- un ensemble de paramètres
Les différents critères m'imposent de faire différents calculs pour obtenir un classement final. Je dois par exemple parcourir une première fois toutes les équipes engagées, puis en cas d'égalité établir un "mini classement" entre les équipes à égalité, afin de les départager.
Pour éviter de multiplier les accès à la base j'essaie de filtrer la liste des matchs avec une copie du DataSet, que j'essaie de filtrer :
Ce que je ne comprends pas, c'est que je n'ai pas du tout le même résultat qu'avec mon éditeur SQL, qui me filtrait bien les matchs sur les n équipes contenues dans maSousRequeteMatchs...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 //maSousRequeteMatchs contient la liste des identifiants des équipes à filtrer (-> exemple : 15,18,22) DataSet dsMatchsJouesDiffPart = dsMatchsJoues.Copy(); string maRequeteMatchs = "(M_EQUIPE_A_ID not in (" + maSousRequeteMatchs.ToString() + ") AND M_EQUIPE_B_ID not in (" + maSousRequeteMatchs.ToString() +"))"; DataRow[] selMatchsDiffPartASuppr = dsMatchsJouesDiffPart.Tables[0].Select(maRequeteMatchs); foreach (DataRow dr in selMatchsDiffPartASuppr) { dsMatchsJouesDiffPart.Tables[0].Rows.Remove(dr); }
J'en déduis que le Select n'aime pas les in/not in. Mais quelle est l'alternative?
Partager