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

Accès aux données Discussion :

LINQ to SQL] Ajouter un élément dans une IQueryable


Sujet :

Accès aux données

  1. #1
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut LINQ to SQL] Ajouter un élément dans une IQueryable
    Hello

    J'utilise la méthode suivante pour récupérer une liste de départements.
    En fait j'ai voulu ajouter un département intitulé "Tous", qui n'existe pas en base. Ca fonctionne mais je sens qu'on peut faire plus simple en 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
     
            public object SelectDepartments()
            {
                var departments = from depts in tables.Department
                                  orderby depts.lblDepartment
                                  select new { depts.idDepartment, depts.lblDepartment };
     
                var allDepartments = new { idDepartment = 0, lblDepartment = "Tous"};
                var departmentsList = (new[] { allDepartments }).ToList();
                departmentsList.RemoveAt(0);
                departmentsList.AddRange(departments);
                departmentsList.Add(allDepartments);
                return departmentsList;
            }
    En gros je créé un type anonyme contenant un id et un libellé, j'ajoute ce type à une liste, et j'ajoute à cette liste mon élément "Tous".
    Et comme je veux que mon élément soit en dernier, je suis obligée de l'enlever de l'index 0 de ma liste, pour le rajouter à la fin.

    Bref c'est bien crado quoi

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Points : 337
    Points
    337
    Par défaut
    T'es au courant que depuis .NET 2.0 il existe des collections génériques?

    Ca me parait incroyable de pas les utiliser (d'autant que tu utilises LINQ, et je n'ai jamais vu un exemple de LINQ sur le net qui retourne des objects ou qui utilise des tableaux d'object...)

    Bref, je verrais bien quelque chose comme ça perso:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public List<Department> SelectDepartments()
    {
        var departments = (from depts in tables.Department
                           orderby depts.lblDepartment
                           select depts).ToList();
     
        departements.Insert(0, new Department() { idDepartment = 0, lblDepartment = "Tous" });
        return departmentsList;
    }
    Et si tu peux retourner un IEnumerable, c'est encore mieux

  3. #3
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Le fait est que c'est une mauvaise pratique d'exposer des types anonymes comme retour de fonction.
    Il vaudrait mieux passer par des objets de transfert. Les objets anonymes sont destinés à avoir une portée locale à cause du fait qu'il n'y a que le compilateur qui connait le type exacte de ces objets.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  4. #4
    Membre régulier Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Points : 88
    Points
    88
    Par défaut
    Ah oui effectivement

    J'étais tellement excitée par LINQ et par les types anonymes que j'ai essayé d'en utiliser partout et j'ai mis de côté les génériques.

    Merci pour vos réponses, ça marche nickel

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

Discussions similaires

  1. Ajouter des éléments dans une base de données Access
    Par bidule123456 dans le forum ASP
    Réponses: 74
    Dernier message: 07/09/2007, 14h00
  2. Réponses: 8
    Dernier message: 27/04/2007, 14h07
  3. Réponses: 12
    Dernier message: 12/03/2007, 16h58
  4. Correction pour ajouté un élément dans une liste
    Par Rifton007 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/01/2007, 11h09
  5. ajouter un élément dans une liste
    Par Le Mérovingien dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 02/07/2006, 17h43

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