IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linq Discussion :

Objet n'apparaissant qu'une seule fois?


Sujet :

Linq

  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    363
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 363
    Points : 161
    Points
    161
    Par défaut Objet n'apparaissant qu'une seule fois?
    Bonjour,

    Voilà, j'ai une collection de ma classe Segment que voici :

    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);
            }
        }
    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
     
    var useSegments = (from t1 in allSegments
                                   where (from t2 in allSegments where t2.Equals(t1) select t2).Count() == 1
                                   select t1).ToList();
    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.

    Y aurait-il une meilleure méthode pour récupérer mes segments?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    avec un groupby peut-être ?

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/08/2011, 01h07
  2. J'aimerais que le résultat n'apparaisse qu'une seule fois
    Par beegees dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/01/2009, 14h29
  3. Réponses: 8
    Dernier message: 23/09/2008, 11h20
  4. Réponses: 18
    Dernier message: 10/02/2005, 13h22
  5. Réponses: 2
    Dernier message: 30/11/2004, 11h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo