Filtrage d'une datatable ligne à l'aide d'une clause where
J'ai un DataTable que je suis en tirant à partir d'un DataSet. À partir de la DataTable, je veux utiliser la clause where pour le retour d'une ligne particulière. J'ai regardé "Comment puis-je sélectionner une ligne d'une table de données à l'aide de deux valeurs de la variable?" mais j'obtiens une erreur
"Impossible de convertir implicitement le type de Système.Les données.DataRow [] " pour
'Système.Les données.DataRow'"
J'ai cherché sur google, mais impossible de trouver une solution.
Mon code est:
mySqlDataAdapter.Fill(myDataSet);
DataTable dtTable = myDataSet.Tables[0];
DataRow dr = dtTable.Select("VendorID = " + Session["VendorId"].ToString());
Comment puis-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
La Sélectionnez méthode d'un DataTable () retourne un tableau de DataRow même si votre requête sélectionne une seule ligne
Alors, si vraiment vous attend juste une ligne, vous pouvez facilement saisir attendus de la ligne d'en vérifier la longueur du tableau. Dans ce cas, il est à mon avis pas de fantaisie, Énumérable les méthodes d'extension sont vraiment nécessaires
Select() retourne un tableau de lignes, et vous êtes en l'assignant à une seule ligne.
Que vous pouvez faire :
ou
qui va vous donner un tableau de lignes.
Considère que il y a un seul et unique résultat
DataTable.Select()
retourne un tableau deDataRow
.Si vous voulez seulement le premier enregistrement,
Utiliser la méthode
First()
:La méthode Select() renvoie une collection IEnumerable avec un DataRow à l'intérieur, dans votre cas. Vous devez extraire le DataRow de cette collection avec FirstOrDefault() à la place.