Bonjour,
Voilà, j'ai une collection de ma classe Segment que voici :
J'aimerais pouvoir récupérer dans ma collection tous les segments n'apparaissant qu'une seule et unique fois, pour cela, actuellement, j'utilise la requête suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class Segment:IEquatable<Segment> { public readonly GPoint a, b; public Segment(GPoint a,GPoint b) { this.a = a; this.b = b; } public bool Equals(Segment other) { if(other == null) return false; if(other.a.Equals(a) && other.b.Equals(b) || other.a.Equals(b) && other.b.Equals(a)) return true; return false; } public override int GetHashCode() { return a.GetHashCode()+b.GetHashCode(); } public override bool Equals(object obj) { return Equals(obj as Segment); } }
le souci est que ma collection peut contenir plusieurs millions de segments, et cette requête devient de suite très longue à s'exécuter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var useSegments = (from t1 in allSegments where (from t2 in allSegments where t2.Equals(t1) select t2).Count() == 1 select t1).ToList();
Y aurait-il une meilleure méthode pour récupérer mes segments?
Partager