none
Requete linq pour charger membre d'une table dans un dataGridView1.DataSource RRS feed

  • Question

  • Bonjour,

    J'ai créé une base de données en sqlite avec EntityFramework 7.

    Je voudrais charger seulement les données de 2 colonnes de ma table dans un dataGridView en utilisant une requête ling,

    J'ai l'erreur suivante :


    Merci de votre aide.



    pascal

    samedi 28 mai 2016 09:38

Réponses

  • Bonjour, 

    Le message est clair pourtant ...

    Soit vous spécifiez le type de retour étant un IEnumerable<TableOutil> soir faites un .ToList() lors de votre return. 

    Cela donne : 

    public static IEnumerable<TableOutil> GetListeOutils()
    {
         using(var DC = new DataContext())
         {
              var Outil = from b in DC.TableOutils
                          select new TableOutil()
                          {
                               Designation = b.Designation,
                               Fournisseur = b.Fournisseur
                          };
    
              return Outil.ToArray();
         }
    }

    Ou

    public static List<TableOutil> GetListeOutils()
    {
         using(var DC = new DataContext())
         {
              var Outil = from b in DC.TableOutils
                          select new TableOutil()
                          {
                               Designation = b.Designation,
                               Fournisseur = b.Fournisseur
                          };
    
              return Outil.ToList();
         }
    }

    Attention, j'ai retiré volontairement le ToList dans votre requête linq puisque celle-ci demandera à EntityFramework d'effectuer la requête remontant toutes les colonnes de la table liée à votre entité TableOutil.

    Pour vous éviter ces problèmes veillez à effectuer le ToList ou ToArray à la fin de votre méthode uniquement (et dans le Using sinon votre connexion à votre base de données sera fermée.

    Cordialement,


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    • Marqué comme réponse Fred142 lundi 30 mai 2016 16:27
    samedi 28 mai 2016 09:57

Toutes les réponses

  • Bonjour, 

    Le message est clair pourtant ...

    Soit vous spécifiez le type de retour étant un IEnumerable<TableOutil> soir faites un .ToList() lors de votre return. 

    Cela donne : 

    public static IEnumerable<TableOutil> GetListeOutils()
    {
         using(var DC = new DataContext())
         {
              var Outil = from b in DC.TableOutils
                          select new TableOutil()
                          {
                               Designation = b.Designation,
                               Fournisseur = b.Fournisseur
                          };
    
              return Outil.ToArray();
         }
    }

    Ou

    public static List<TableOutil> GetListeOutils()
    {
         using(var DC = new DataContext())
         {
              var Outil = from b in DC.TableOutils
                          select new TableOutil()
                          {
                               Designation = b.Designation,
                               Fournisseur = b.Fournisseur
                          };
    
              return Outil.ToList();
         }
    }

    Attention, j'ai retiré volontairement le ToList dans votre requête linq puisque celle-ci demandera à EntityFramework d'effectuer la requête remontant toutes les colonnes de la table liée à votre entité TableOutil.

    Pour vous éviter ces problèmes veillez à effectuer le ToList ou ToArray à la fin de votre méthode uniquement (et dans le Using sinon votre connexion à votre base de données sera fermée.

    Cordialement,


    Kevin BEAUGRAND, Modis FRANCE
    Merci de bien vouloir "Marquer comme réponse", les réponses qui ont résolu votre problème.

    • Marqué comme réponse Fred142 lundi 30 mai 2016 16:27
    samedi 28 mai 2016 09:57
  • Bonjour Kevin,

    Merci pour votre réponse et de vos conseils.

    bien cordialement.


    pascal

    lundi 30 mai 2016 16:30