Casting datable générique à datable dactylographié
J'ai besoin de réutiliser un DataAccess méthode prescrite par le client. Cette méthode retourne à la vanille, datatable.
Je veux lancer ce datatable à ma datatable Typée. Le nombre de colonnes et de leurs types de match.
C'est le message "Impossible de convertir l'objet de type 'System.Les données.DataTable' de type 'MarketValueDataTable'."
est très clair, mais comment puis-je résoudre ce problème?
Eu un coup d'oeil à casting-une-base-type-pour-un dérivé de typemais ne pouvait pas voir comment faire ce travail.
Je ne peut pas remplir la datatable avec un datareader, ne peut utiliser le client DataAccess méthode.
source d'informationauteur callisto
Vous devez vous connecter pour publier un commentaire.
La fonte ne peut fonctionner que si le tableau retourné par la méthode était en fait une instance de
MarketValueDataTable
. Si elle ne l'est pas, tout ce que vous pouvez faire est de copier les données d'une instance deMarketValueDataTable
. Vous pouvez par exemple utiliser leMerge
méthode :Utiliser cette fonction très pratique pour convertir régulièrement
DataTable
à typéDataTable
.VB
Utilisation
C#
Utilisation
Vous ne pouvez pas convertir le DataTable à une MarketValueDataTable, pour la simple raison qu'il n'héritent pas de lui.
Ce que vous devez faire est d'instancier un nouvel MarketValueDataTable, puis copier les données de la DataTable.
Essayez quelque chose comme:
(Je n'ai pas testé ce)
Si votre datatable est un générique de table, alors il ne peut pas être lancée à un MarketValueDataTable.
Une chose que vous pouvez faire est d'essayer de créer un nouveau MarketValueDataTable objet et l'ajouter manuellement des lignes. En parcourant les lignes de votre générique datatable et puis en parcourant les colonnes de chaque ligne vous pouvez utiliser la réflexion pour définir les valeurs des propriétés d'un nouveau MarketValueDataTableRow.
Quelque chose comme ce qui suit (avertissement - pseudo-code):
Vous avez l'idée générale. Étape à travers les lignes du générique de la table et utiliser la réflexion pour trouver la correspondance des propriétés spécifiques tapé une ligne de données. Cela devrait fonctionner (j'ai utilisé la même approche plus tôt), mais le code doit être modifié pour correspondre à vos besoins.