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

C# Discussion :

Cloner une liste via LINQ [Débutant]


Sujet :

C#

  1. #1
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut Cloner une liste via LINQ
    Bonjour,

    je souhaite cloner une liste d'objet métier pour la manipuler , j'ai trouve ce type d'exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                //clone la table pour reindexation priorités
                List<ChosenCourseDataSet> cloneLstCoursChoisis = new List<ChosenCourseDataSet>(lstCoursChoisis.Select(x => x.Clone()));
    sauf que x.Clone n'est pas reconnu.

    Quelqu'un peut il m'aider ?
    Merci par avance.

  2. #2
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    j'ai trouvé un complément qui me fait transformer mon objet métier comme ceci :


    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
        [Serializable]
        public class ChosenCourseDataSet : CourseDataSet, IEquatable<ChosenCourseDataSet>, ICloneable
        {
            public CampaignCourseDataSet campaignCourse { set; get;}
     
            //** Surcharge de la methode equals : IEquatable<LotDataSet> **//
            public bool Equals(ChosenCourseDataSet otherCourse)
            {
                if (this.clefCours.Equals(otherCourse.clefCours))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
     
     
            //** Cloner la liste **//
            public object Clone()
            {
     
                MemoryStream ms = new MemoryStream();
     
                BinaryFormatter bf = new BinaryFormatter();
     
                bf.Serialize(ms, this);
     
                ms.Position = 0;
     
                object obj = bf.Deserialize(ms);
     
                ms.Close();
     
                return obj;
     
            }
        }
    c'est une bonne solution ?

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Points : 158
    Points
    158
    Par défaut
    Lorsque je veux une liste avec une linq, je fais en général un .Select( row => row.property)

    Donc, si tu veux la ligne entière, je proposerais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                List<ChosenCourseDataSet> cloneLstCoursChoisis = new List<ChosenCourseDataSet>(lstCoursChoisis.Select(x => x));
    Je crois que cela équivaut à un Select all, mais pas certains. Et cela devrait prendre tout ton objet sans passer par Clone().

  4. #4
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Merci.

    est ce mieux de cloner ou pas ? si je veux manipuler ma copie ?
    quand je dis manipuler , je dois mettre à jour mes objets de ma liste.

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 116
    Points : 158
    Points
    158
    Par défaut
    Je ne connais pas trop le clonage.

    Maintenant, avec ce que j'ai ajouté, tu dois avoir deux listes complètements identiques, qui ne sont pas relié entre elles.

    Tu as deux collection d'objets. Tu peut changer l'une, sans changer l'autre.

  6. #6
    Membre éprouvé
    Avatar de dkmix
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    619
    Détails du profil
    Informations personnelles :
    Localisation : Jamaïque

    Informations forums :
    Inscription : Septembre 2007
    Messages : 619
    Points : 924
    Points
    924
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<T> MaListeClonee = new List<T>(MaListe);

  7. #7
    Membre éprouvé Avatar de shaun_the_sheep
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2004
    Messages
    1 619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 619
    Points : 996
    Points
    996
    Par défaut
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/12/2009, 20h05
  2. Réponses: 2
    Dernier message: 16/11/2007, 11h44
  3. [GTK+] Modifier une liste via une fonction callback
    Par odsen.s dans le forum GTK+ avec C & C++
    Réponses: 12
    Dernier message: 03/05/2007, 17h33
  4. [VB5]Connaitre l'index d'une liste via son contenu
    Par guda dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/10/2005, 15h08
  5. Ajouter une ligne dans une liste via un POPUP
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/01/2005, 16h20

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