44 votes

DataTable ne contient pas de définition pour AsEnumerable

L'utilisation de linq pour interroger une table de données renvoie l'erreur suivante : CS0117 : « DataSet1.map DataTable » ne contient pas de définition pour « AsEnumerable »

Le projet inclut une référence pour System.Data.Datasetextensions.

Voici le code.

 using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration;
using System.Reflection;
using System.Data;
using System.Linq;
using System.Data.Linq;
using System.Data.Common;
using System.Data.DataSetExtensions;
using System.Linq.Expressions;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

protected void Page_Load(object sender, EventArgs e)
    {
        var query1 = from mfg_nm in DataSet1.mapDataTable.AsEnumerable()

                     select mfg_nm;
}

l'exécuter sans AsEnumerable() entraîne

 var query1 = from mfg_nm in DataSet1.mapDataTable

                     select mfg_nm;

CS1660 : impossible de convertir l'expression lambda en type 'string' car ce n'est pas un type délégué

Merci d'avance pour votre aide

25voto

codemirror Points 1013

Ajouter System.Data.DataSetExtensions à partir de " nuget " ou " ajouter une référence "

Ajoutez ce code :

 using System.Data.DataSetExtensions;

15voto

Panagiotis Kanavos Points 14085

Dans tous les cas où cela se produit, la référence à System.Data.DataSetExtensions.dll était manquante. En cas de doute, essayez de créer un projet de console simple ciblant .NET 4 avec une référence à System.Data.DataSetExtensions.dll, pour vérifier que l'ajout de la référence fonctionne réellement.

Notez également que vous devez uniquement utiliser l'espace de noms System.Data.

BTW mapDataTable est un DataTable, n'est-ce pas ?

2voto

Adam Cox Points 1

La recherche Google "system.data.datatable ne contient pas de définition pour asenumerable" m'a amené ici, et mon problème manquait :

 using System.Data;

En raison de mon outil, le message d'erreur était un peu trompeur. D'où ma réponse à cette question. Le code était comme...

 public List<mytype> MyMethod(params) {
   return new mynamespace.myclasslib.myclass().GetDataTable(params).AsEnumerable()
      .etc
}

Une fois que j'ai essayé de déclarer explicitement le DataTable, il est devenu évident qu'il me manquait l'instruction using.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X