103 votes

Vérifier si la valeur existe dans dataTable ?

J'ai un DataTable avec deux colonnes Auteur y Nom de livre .

Je veux vérifier si la valeur de la chaîne donnée Auteur existe déjà dans la DataTable. Existe-t-il une méthode intégrée pour le vérifier, comme pour les tableaux ? array.contains ?

226voto

Tim Schmelter Points 163781

Vous pouvez utiliser LINQ-to-DataSet con Enumerable.Any :

String author = "John Grisham";
bool contains = tbl.AsEnumerable().Any(row => author == row.Field<String>("Author"));

Une autre approche consiste à utiliser DataTable.Select :

DataRow[] foundAuthors = tbl.Select("Author = '" + searchAuthor + "'");
if(foundAuthors.Length != 0)
{
    // do something...
}

Q : que se passe-t-il si nous ne connaissons pas les en-têtes des colonnes et que nous voulons trouver si une valeur de cellule PEPSI existe dans toutes les lignes 'c colonnes ? Je peux tout boucler pour le pour le découvrir, mais y a-t-il un meilleur moyen ? -

Oui, vous pouvez utiliser cette requête :

DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
    .Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));

15voto

mservidio Points 5412

Vous pouvez utiliser Linq. Quelque chose comme :

bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;

10voto

Antonio Bakula Points 12301
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}

ajouter à votre clause d'utilisation :

using System.Linq;

et ajouter :

System.Data.DataSetExtensions

aux références.

5voto

Kibbee Points 36474

Vous devriez être en mesure d'utiliser le DataTable.Select() méthode. Vous pouvez l'utiliser comme ceci.

if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
    ...

La fonction Select() renvoie un tableau de DataRows pour les résultats correspondant à l'instruction where.

0voto

Blast_dan Points 676

Vous pourriez définir la base de données comme IEnumberable et utiliser linq pour vérifier si les valeurs existent. Consultez ce lien

Requête LINQ sur Datatable pour vérifier si un enregistrement existe

l'exemple donné est

var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...

vous pourriez compléter où avec n'importe quel

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X