Met linq heb ik een collectie van objecten gemaakt (curTeams)
Nu wil ik die teams in wedstrijden indelen op een dusdanige manier dat elk team eenmaal tegen elk van de andere teams speelt.
Daarvoor heb ik deze query bedacht:
Game is een class die (in dit geval) 2 team objecten meekrijgt die uiteindelijk als properties van het game object gaan gelden.
Qua resultaat geeft dit precies wat ik zoek, alleen, het lijkt wel alsof er iets vreemds gebeurd met s2 serie.
Het lijkt wel alsof de team objecten daar opnieuw worden aangemaakt. (gekopieerd) De team objecten uit de s1 serie blijven wel gelijk.
Wat ik wil is om vanuit het team object te kunnen kijken naar de bijbehorende game objecten. Daarvoor registreer ik (in de initialisatie van het game object) het game object bij het teamobject.
Dat werkt perfect voor de s1 serie (zie query), maar niet voor de s2 serie. Om te controleren of het misschien iets te maken had met teamA en teamB heb ik zowel Game(s1, s2) als Game(s2, s1) geprobeerd in de creatie-query.
Voor elk "s1" team kan ik nu de "s1" wedstrijden terug vinden, maar niet de "s2" wedstrijden.
Voor elk "s2" team kan ik alleen de huidige wedstrijd zien.
Voorbeeld:
Wat doe ik nu fout
Het principe werkt op zich, anders zou het bij de "s1" teams ook niet werken. Doet Linq soms iets raars wanneer je een select doet op 2x dezelfde data ?
Het is ook niet dat "s2" in zijn geheel een kopie is van de teams. In dat geval zou ik voor teamC en teamD uit de "s2" teams in ieder geval resp. 1, 3 en 2, 4, 5 moeten zien.
Nu wil ik die teams in wedstrijden indelen op een dusdanige manier dat elk team eenmaal tegen elk van de andere teams speelt.
Daarvoor heb ik deze query bedacht:
C#:
1
2
3
4
5
6
| IEnumerable<Game> curGames = from s1 in curTeams from s2 in curTeams where s2.ID > s1.ID orderby s1.ID, s2.ID select new Game(s1, s2); |
Game is een class die (in dit geval) 2 team objecten meekrijgt die uiteindelijk als properties van het game object gaan gelden.
Qua resultaat geeft dit precies wat ik zoek, alleen, het lijkt wel alsof er iets vreemds gebeurd met s2 serie.
Het lijkt wel alsof de team objecten daar opnieuw worden aangemaakt. (gekopieerd) De team objecten uit de s1 serie blijven wel gelijk.
Wat ik wil is om vanuit het team object te kunnen kijken naar de bijbehorende game objecten. Daarvoor registreer ik (in de initialisatie van het game object) het game object bij het teamobject.
C#:
1
2
3
4
| TeamA = newTeamA; TeamA.Attachgame(this); TeamB = newTeamB; TeamB.Attachgame(this); |
Dat werkt perfect voor de s1 serie (zie query), maar niet voor de s2 serie. Om te controleren of het misschien iets te maken had met teamA en teamB heb ik zowel Game(s1, s2) als Game(s2, s1) geprobeerd in de creatie-query.
Voor elk "s1" team kan ik nu de "s1" wedstrijden terug vinden, maar niet de "s2" wedstrijden.
Voor elk "s2" team kan ik alleen de huidige wedstrijd zien.
Voorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| teams: A, B, C, D games: 0: A - B 1: A - C 2: A - D 3: B - C 4: B - D 5: C - D Nu zou je verwachten dat als je per team gaat kijken dat je krijgt: A: 0, 1, 2 B: 0, 3, 4 C: 1, 3, 5 D: 2, 4, 5 In werkelijkheid krijg ik: "s1" teams Game0 A: 0, 1, 2 Game1 A: 0, 1, 2 Game2 A: 0, 1, 2 Game3 B: 3, 4 (geen 0 als "s2" team) Game4 B: 3, 4 (geen 0 als "s2" team) Game5 C: 5 (geen 1, 3 als "s2" team) "s2" teams Game0 B: 0 Game1 C: 1 Game2 D: 2 Game3 C: 3 Game4 D: 4 Game5 D: 5 |
Wat doe ik nu fout
Het principe werkt op zich, anders zou het bij de "s1" teams ook niet werken. Doet Linq soms iets raars wanneer je een select doet op 2x dezelfde data ?
Het is ook niet dat "s2" in zijn geheel een kopie is van de teams. In dat geval zou ik voor teamC en teamD uit de "s2" teams in ieder geval resp. 1, 3 en 2, 4, 5 moeten zien.