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 :

requete linq affichage sur une ligne


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 45
    Points : 33
    Points
    33
    Par défaut requete linq affichage sur une ligne
    Bonjour tout le monde ,

    Je viens à vous pour résoudre un problème !
    Si vous voulez bien cerné mon problème, commencez par regarder l'image


    Uploaded with ImageShack.us

    Donc pour chaque numéro Bug qui est un identifiant unique, je vais avoir deux statuts possibles, affecté puis fermé.

    Ce que j'aimerai faire c'est affiché sur la même ligne, la date "affecté" et la date "fermé".
    exemple :
    Numero Bug| Projet | Severite | date affecté | date fermé
    3142 | Application | Bloquant | 29/01/2013 | 21/02/2013

    Je vous montre ma requête linq à l'heure actuelle

    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
     
                var results = from table1 in GetTable2().AsEnumerable()
                              join table2 in GetTable1().AsEnumerable() on (int)table1["NumeroBug"] equals (int)table2["NumeroBug"] 
                              join table3 in GetTable3().AsEnumerable() on (int)table1["NumeroBug"] equals (int)table3["NumeroBug"]
                              where table2["Vers"].ToString() == "CS CAP GEMINI"
                              where table1["Severite"].ToString() == valeur
                              where (table3["NouveauStatut"].ToString().Contains("fermé")) || (table3["NouveauStatut"].ToString().Contains("affecté"))
     
                              select new
                              {
                                  NumeroBug = (int)table1["NumeroBug"],
                                  Projet = (String)table1["projet"],
                                  Severite = (String)table1["Severite"],
                                  DateModification = (DateTime)table3["dateModification"],
                                  statut = (String)table3["NouveauStatut"],
     
                              };
     
       table.Columns.Add(NumeroBugColumn);
                table.Columns.Add(projetColumn);
                table.Columns.Add(SeveriteColumn);
                table.Columns.Add(dateModificationColumn);
                table.Columns.Add(NouveauStatutColumn);
     
                foreach (var item in results)
                {
     
                        DataRow dr = table.NewRow();
                        dr["Numero bug"] = item.NumeroBug;
                        dr["Projet"] = item.Projet;
                        dr["Severite"] = item.Severite;
                        dr["Date"] = item.DateModification;
                        dr["Statut"] = item.statut;
     
     
     
                        table.Rows.Add(dr);
     
                }
    Si vous avez besoin de plus de détails, je suis la.

    En espérant que vous puissiez m'aider.

    Paul Magnin.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Il y a certainement une manière plus élégante mais je n'arrive pas à cerner la structure que tu utilise. Alors je propose cette solution.

    Premièrement, tu déclare un classe à part
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Affichage
    {
      public int NumeroBug { get; set; }
      public String Projet { get; set; }
      public String Severite { get; set; }
      public DateTime DateAffectation { get; set; }
      public DateTime DateFermeture { get; set; }
    }

    Deuxièmement, tu fait deux requête linq au lieu d'une seule. Une pour le statut "affecté" et une pour le statut "fermé". Cela fera donc deux foreach.
    Dans ce qui suis je pars du principe qu'on ne peut pas trouver de bug au statut "fermé" sans qu'il existe le même bug au statut "affecté". Cela me semblais logique.

    Premier foreach
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    List<Affichage> Liste = new List<Affichage>();
    foreach (var item in affectationResults)
    {
      Affichage current = new Affichage();
      Affichage.NumeroBug = item.NumeroBug;
      Affichage.Projet = item.Projet;
      Affichage.Severite = item.Severite;
      Affichage.DateAffectation = item.DateModification;
     
      Liste.Add(Affichage);
    }

    Deuxième foreach
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach (var item in fermetureResults)
    {
      Affichage current = Liste.SingleOrDefault(a => a.NumeroBug == item.NumeroBug);
     
      if (current != null)
        current.DateAffectation = item.DateModification;
    }

    Et enfin tu remplis ton tableau avec la liste. Je ne met ici que l'ajout des DataRow car tu devrais pouvoir te débrouiller pour le reste
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach (Affichage current in Liste)
    {
      DataRow dr = table.NewRow();
      dr["Numero bug"] = current.NumeroBug;
      dr["Projet"] = current.Projet;
      dr["Severite"] = current.Severite;
      dr["DateAffectation"] = current.DateAffectation;
      dr["DateFermeture"] = current.DateFermeture;
     
      table.Rows.Add(dr);
    }

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Points : 654
    Points
    654
    Par défaut
    tu peux faire ça
    si c'est de l'asp je te laisse regarder du coté de columngenerator + databinding
    Si c'est du xaml les data template + databinding

  4. #4
    Membre émérite
    Avatar de azstar
    Homme Profil pro
    Architecte Technique BizTalk/.NET
    Inscrit en
    Juillet 2008
    Messages
    1 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Technique BizTalk/.NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 198
    Points : 2 424
    Points
    2 424
    Par défaut
    Je n'arrive pas à suivre ton code mais tu peux faire

    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
     
    from table1 in GetTable1().AsEnumerable()
    join table2 in GetTable1().AsEnumerable() on (int)table1["NumeroBug"] equals (int)table2["NumeroBug"] 
    and (string)table1["NouveauStatut"] not equals (string)table2["NouveauStatut"] 
     
    			select new
                              {
                                  NumeroBug = (int)table1["NumeroBug"],
                                  Projet = (String)table1["projet"],
                                  Severite = (String)table1["Severite"],
                                  DateModification1 = (DateTime)table1["dateModification"],
    			DateModification2 = (DateTime)table2["dateModification"],
    			 statut1 = (String)table1["NouveauStatut"],
    			 statut2 = (String)table2["NouveauStatut"],
     
                              };
    DateModification1 et DateModification2 sont les dates de modification et
    statut1 et statut2 les deux status ("affecté","Fermé")

    j’espère que je sais claire

Discussions similaires

  1. Highlightable Control - affichage sur une ligne
    Par stess29 dans le forum Visual Studio
    Réponses: 0
    Dernier message: 17/06/2011, 08h29
  2. Help - Affichage sur une ligne et pas 36 !
    Par fabrice_nc dans le forum Cognos
    Réponses: 3
    Dernier message: 10/04/2009, 02h15
  3. requete affichage sur une ligne ?
    Par jfb53 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/04/2009, 16h34
  4. [ACC 97][ETAT] affichage sur une ligne
    Par 6ril25 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 09/09/2008, 16h57
  5. Affichage sur plusieurs lignes d'une méthode toString
    Par Flophx dans le forum Interfaces Graphiques en Java
    Réponses: 9
    Dernier message: 24/05/2006, 16h30

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