Trouver une chaîne de caractères dans tous DataTable colonnes
Je suis en train d'essayer de trouver un moyen rapide de trouver une chaîne de caractères dans tous datatable colonnes!
Suivi ne fonctionne pas comme je veux rechercher dans toutes les colonnes de la valeur.
string str = "%whatever%";
foreach (DataRow row in dataTable.Rows)
foreach (DataColumn col in row.ItemArray)
if (row[col].ToString() == str) return true;
de quoi êtes-vous tenter de le faire?
La recherche dans tous les datatable cellules pour une chaîne, mais je veux l'utiliser COMME clause et de manière plus rapide aussi!
Le faire dans la base de données - mssqltips.com/sqlservertip/1522/...
merci, ce script sera exécuté sur [inconnu] datatable en mémoire, donc, je ne sais pas les colonnes je ne connais le moteur de données!
La recherche dans tous les datatable cellules pour une chaîne, mais je veux l'utiliser COMME clause et de manière plus rapide aussi!
Le faire dans la base de données - mssqltips.com/sqlservertip/1522/...
merci, ce script sera exécuté sur [inconnu] datatable en mémoire, donc, je ne sais pas les colonnes je ne connais le moteur de données!
OriginalL'auteur meYnot | 2012-05-19
Vous devez vous connecter pour publier un commentaire.
Ceci peut être obtenu par filtrage. Créer une (ré-utilisable) de la chaîne de filtrage basé sur toutes les colonnes:
Maintenant vous pouvez obtenir les lignes où l'une des colonnes correspond à votre searchstring:
query
?Un StringBuilder.. Pourquoi 2-ans-ans-moi n'avons pas utilisé les AppendFormat-méthode, je ne sais pas.. 🙂
OriginalL'auteur TDull
Vous pouvez utiliser LINQ. Il ne serait pas plus vite, parce que vous avez encore besoin de regarder à chaque cellule dans le cas où la valeur n'est pas là, mais il va tenir dans une seule ligne:
Pour la recherche de texte aléatoire et en retournant un tableau de lignes avec au moins une cellule qui a une casse de match, utilisez ceci:
Merci @dasblinkenlight pour votre réponse, mais j'aimerais avoir une clause de "==" parce que je vais être à la recherche de sous-chaîne de la valeur cloumns
Bien sûr, vous pouvez utiliser
Contains(str)
à la place.Merci pour la mise à jour, @dasblinkenlight, une erreur s'est produite, le Système de la.Les données.DataRowCollection' ne contient pas une définition pour 'Tout' et aucune méthode d'extension 'Tout' acceptant un premier argument de type 'System.Les données.DataRowCollection' a pu être trouvé
Essayez cette autre édition.
OriginalL'auteur dasblinkenlight
Si vous voulez vérifier chaque ligne de chaque colonne de votre Table de données, essayez ceci (il fonctionne pour moi!).
N'oubliez pas de transtypage
object item
à ce que vous avez besoin (string, int, etc).J'ai franchi avec le débogueur et cela fonctionne à merveille. J'espère que cette aide, bonne chance!
OriginalL'auteur Chris Paton
Vous pouvez créer une routine de recherche avec un tableau de chaînes de caractères avec les noms des colonnes, ainsi:
OriginalL'auteur Richard Ramos
Vous pouvez créer une expression de filtre sur la datatable. Voir ce MSDN l'article. Utiliser comme dans l'expression du filtre.
OriginalL'auteur Emmie Lewis-Briggman