Comment puis-je utiliser des expressions lambda pour filtrer des datarow?
Comment puis-je rechercher des lignes dans une table de données pour une ligne avec Col1="Mavaleur"
Je suis en train de penser à quelque chose comme
Assert.IsTrue(dataSet.Tables[0].Rows.
FindAll(x => x.Col1 == "MyValue" ).Count == 1);
Mais bien sûr, cela ne fonctionne pas!
Voulez-vous retourner les lignes correspondantes, ou tout simplement obtenir un compte de combien il y en a?
OriginalL'auteur Bob | 2010-08-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser LINQ to jeux de données pour ce faire:
Note, vous pouvez aussi le faire sans l'appel d'Affirmer:
Si le nombre de lignes n'est pas égale à un (c'est pourquoi l'appel à
Single
), une exception sera levée, et que l'exception non gérée devrait échouer votre cas de test. Personnellement, j'aime bien le dernier, car il a une plus claire de la signification sémantique.Ci-dessus peut être encore réduit à:
En outre, vous pouvez profiter de la
méthode sur le
DataRowExtensions
de la classe pour simplifier type-safe d'accès au domaine (ainsi que de fournir le plus d'avantages de la conversion deDBNull
null homologues .NET):OriginalL'auteur casperOne
Vous pouvez utiliser le
Select
méthode de la table de données pour ce faire, ou le Filtre de la Propriété de laDefaultDataView
sur la table.Pour la
Select
méthode:Pour la
DefaultView
Filtre:OriginalL'auteur davisoa
Vous pouvez essayer ceci:
OriginalL'auteur Sougata Mukherjee
Pourquoi utiliser lambda et pas sélectionnez?
OriginalL'auteur Nix
Le code que vous avez écrit, vérifie qu'il n'y a qu'une seule ligne qui répond à vos critères de recherche.
Si vous voulez vraiment les lignes, baisse de la
Assert
etCount
OriginalL'auteur Yoni H