L'utilisation de linq pour interroger un datatable 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écution de AsEnumerable () se traduit par
var query1 = from mfg_nm in DataSet1.mapDataTable
select mfg_nm;
CS1660: Impossible de convertir l'expression lambda en type 'chaîne' car il ne s'agit pas d'un type de délégué
merci d'avance pour votre aide
La méthode que vous voulez se trouve dans l’espace de nom System.Data
; la directive using
convient donc, mais vous avez également besoin d’une référence au System.Data.DataSetExtensions
Assembly. Etes-vous sûr que vous avez cette référence en tant que référence Assembly?
Pourquoi vous avez une directive using pour System.Data.DataSetExtensions
namespace - cela ne génère-t-il pas une erreur?
Quelle est l'erreur exacte avec l'appel AsEnumerable()
? (Je suis surpris de l'erreur que vous obtenez avec le deuxième formulaire ... ce n'est pas l'erreur à laquelle je m'attendais.)
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 simple projet de console 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, non?
La recherche Google "system.data.datatable ne contient pas de définition de" comme nom ", m'a amené ici, et mon problème était absent:
using System.Data;
En raison de mon implémentation, le message d'erreur était un peu trompeur. Par conséquent, 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.
J'ai reçu ce message d'erreur: 'System.Data.DataTable' ne contient pas de définition pour 'AsEnumerable' et aucune méthode d'extension 'AsEnumerable' n'accepte un premier argument de type 'System.Data.DataTable' (il vous manque une directive d'utilisation ou une référence d'assemblage?)
Ajoutée
using System.Data;
Ajout de "System.Data.DataSetExtensions" à la section Références. Cela a résolu le problème.