11
votes

Pourquoi je ne reçois pas .Copopytodatables () dans la requête Linq ()

Cet exemple de code suivant est emprunté à msdn ici . Je ne reçois pas de requête.copytodatable () disponible dans mon code. (Voir la ligne commentée dans mon code suivant). xxx


1 commentaires

Si vous essayez d'appeler copytodatatable () quel message d'erreur obtenez-vous?


7 Réponses :


8
votes

Il existe dans un espace de noms spécifique que vous l'importaez? XXX PRE>

Confirmez également l'ajout de cette référence P>

System.Data.DataSetExtensions 


1 commentaires

DataTable.Seunérable échouerait également si cela n'était pas inclus.



2
votes

Vous devez faire référence à l'assemblage system.data.datasetextSensions et utilisez l'espace de noms system.data .


1 commentaires

Ce n'est pas un problème de référence. L'ensemble de donnéesTextensions est déjà là.



21
votes

Votre instruction SELECT renvoie une séquence de chaînes ( ienumerable ou iquéryable ), pas une séquence de datarswers. La copie () est uniquement disponible sur ienumerable où T est ou dérive de datarow.

au lieu de Sélectionnez Nouvelle {...} - qui va juste obtenir Vous une nouvelle séquence de ce type, essayez: xxx

qui devrait renvoyer la séquence souhaitée de lignes cphysiciennes.

edit Si vous souhaitez convertir un T-DataTable T-DataTable, MSDN dispose d'une classe d'échantillonnage qui reflète tout type et effectue la conversion.

http://msdn.microsoft.com/fr- US / Bibliothèque / BB669096.ASPX


2 commentaires

+1 Pour la seule explication complète et précise (alors qu'il peut être nécessaire de référencer les données de donnéesTextensions, cela ne résoudra pas le problème).


Cela sonne bien. Mais s'il vous plaît dites-moi comment je vais avoir cela corrigé. Si je fais cet iEnumerable Query = // L'ensemble du code ci-dessus, cela ne me permet pas de mettre en place une requête LINQ.



0
votes

Avez-vous référencé System.Data.DataSetTextensions Assembly? Cette méthode d'extension est définie là.


0 commentaires

0
votes

Naviguer plus loin dans MSDN Online m'amène à cette page: http://msdn.microsoft.com/en-us/library/system.data.dataTableextensions.aspx

Il est dit que c'est dans l'espace de noms System.Data (à l'aide de System.Data) et vous devez faire référence au système.data.datasetextensions.dll.


2 commentaires

Si tel était le problème, les appels à Asenumerables échoueraient-ils, n'est-ce pas?


Je suppose que vous avez raison. Je n'ai fait qu'un peu de recherche, et pas de vs à tester ... et je vois que @rex m a probablement la bonne réponse à cette question :-)



4
votes

Je pense que c'est parce que vous créez un type anonyme pour contenir l'objet . Essayez ceci: xxx

Définition de copytodatable : xxx

donc ce que vous sélectionnez avec la requête Doit être de type iEnumerable où t étend datarow


1 commentaires

Avez-vous essayé de référencer des données de données comme d'autres personnes ont mentionné?



0
votes

Ce numéro pour moi a été causé par l'utilisation de DotNet Core 2.0, qui semble avoir aucun moyen de transformer un ienumerable dans un DataTable après sa convertie.

Il suffit d'ajouter ceci pour quiconque apparaît sur cette question avec le même problème.


0 commentaires