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 :

Debutant linq to sql 1er requête [Débutant]


Sujet :

Linq

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 146
    Points : 204
    Points
    204
    Par défaut Debutant linq to sql 1er requête
    Bonjour

    Est il possible de traduire cette requête en linq to sql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT o.Id_Opération
          ,o.Nom
          ,o.Description
          ,o.Id_Coupon
          ,o.Id_Type_Opération
          ,o.Autre
          ,o.DateDebut
          ,o.DateFin
          , ( select t.Nom from [BP].[dbo].Type_Opération t where t.Id_Type_Opération = o.Id_Type_Opération)
      FROM [BP].[dbo].[Opération] o

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 146
    Points : 204
    Points
    204
    Par défaut
    je ne sais pas bien ajouter le 2ème select ( select t.Nom from [BP].[dbo].Type_Opération t where t.Id_Type_Opération = o.Id_Type_Opération)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      var op = (from p in db.Opération
                                select p);

  3. #3
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Normalement tu as du générer ton modèle (dbml) qui te crée un context dans l'exemple "TestDataContext"

    Linq 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                using (var context = new TestDataContext())
                {
                    //result est anonyme
                    var result = from operation in context.Operations
                                 select (new
                                 {
                                     OperationId = operation .PostId,
                                     NomOperation = operation.Nom,
                                     NomTypeOperation = operation.TypeOperation.Nom
                                 });
                }
    Linq 2 (Même chose en mode typé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            public class Operation
            {
                public int OperationId { get; set; }
                public string Nom { get; set; }
                public string TypeOperationNom { get; set; }
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    using (var context = new TestDataContext())
                {
                    //result est dynamic ici
                    var result = from operation in context.Operations
                                 select (new Operation
                                 {
                                     OperationId = operation .PostId,
                                     Nom= operation.Nom,
                                     TypeOperationNom = operation.TypeOperation.Nom
                                 });
                }
    Pour le SQL je trouve plus lisible cette façon (Apres chacun fais comme il veut ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT o.Id_Opération
          ,o.Nom
          ,o.Description
          ,o.Id_Coupon
          ,o.Id_Type_Opération
          ,o.Autre
          ,o.DateDebut
          ,o.DateFin
          ,t.Nom
      FROM [BP].[dbo].[Opération] o
    INNER JOIN [BP].[dbo].[Type_Opération] t
    ON t.Id_Type_Opération = o.Id_Type_Opération
    En espérant t'avoir aidé

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 146
    Points : 204
    Points
    204
    Par défaut
    Tu as raison il faut LEFT OUTER JOIN , MERCI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT o.Id_Opération
          ,o.Nom
          ,o.Description
          ,o.Id_Coupon
          ,o.Id_Type_Opération
          ,o.Autre
          ,o.DateDebut
          ,o.DateFin
          ,t.Nom
      FROM [BP].[dbo].[Opération] o
    LEFT  OUTER JOIN [BP].[dbo].[Type_Opération] t
    ON t.Id_Type_Opération = o.Id_Type_Opération

    Pour le LINQ TO SQL


    la class

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
      public class Opération2
     
        {
            public  int Id_Opération { get; set; }
            public string Nom { get; set; }
            public string Description { get; set; }
            public string Coupon { get; set; }
            public string Type_Opération { get; set; }
            public string Autre { get; set; }
            public System.Nullable<System.DateTime> DateDebut { get; set; }
            public System.Nullable<System.DateTime> DateFin { get; set; } 
     
     
        }

    le linq

    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
    41
     
        public IQueryable<Opération2> GetOpérations()
            {
     
                IQueryable<Opération2> eta; 
     
                eta = null;
                try
                {
     
                       eta = from p in db.Opération
                          join typeOpe in db.Type_Opération on p.Id_Type_Opération equals typeOpe.Id_Type_Opération into gj
                            from subpet in gj.DefaultIfEmpty()
     
                          join typeCoupon in db.Coupon on p.Id_Coupon equals typeCoupon.ID_Coupon into tc 
                          from subTypeCoupon in tc.DefaultIfEmpty()
     
                          select new Opération2
                          {
                              Id_Opération = p.Id_Opération,
                              Nom = p.Nom,  
                              Description = p.Description,
                              Coupon = (subTypeCoupon == null ? String.Empty : subTypeCoupon.Nom_Coupon),
                                        Type_Opération = (subpet == null ? String.Empty : subpet.Nom),
     
                              Autre = p.Autre,
                              DateDebut = p.DateDebut,
                              DateFin = p.DateFin 
                          };
     
     
     
                }
                catch (Exception ex)
                { }
     
                return eta.ToList().AsQueryable();
     
     
     
            }

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/05/2010, 16h31
  2. LINQ to SQL] Tracer les requêtes SQL d'Insert/Update/Delete
    Par annalady dans le forum Accès aux données
    Réponses: 5
    Dernier message: 30/07/2009, 10h17
  3. Colle sur un tri dans une requête linq to sql
    Par boby62423 dans le forum Linq
    Réponses: 5
    Dernier message: 18/03/2009, 10h01
  4. [Linq to SQL] requête complexe faites chauffer vos méninges ;)
    Par anthyme dans le forum Accès aux données
    Réponses: 5
    Dernier message: 06/06/2008, 09h52
  5. [Linq to sql] Problème de requête
    Par Ntotor dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/05/2008, 20h37

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