web-dev-qa-db-fra.com

Vérifier si la valeur existe dans dataTable?

J'ai DataTable avec deux colonnes Author et Bookname .

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

72
valterriann

Vous pouvez utiliser LINQ-to-DataSet avec 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 colonnes En-têtes et si nous voulons trouver le cas échéant La valeur de la cellule PEPSI existe-t-elle dans des colonnes de lignes? Je peux tout boucler à 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"));
176
Rango

Vous pouvez utiliser Linq. Quelque chose comme:

bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;
8
mservidio
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}

ajoutez à votre clause using:

using System.Linq;

et ajouter :

System.Data.DataSetExtensions

aux références.

6
Antonio Bakula

Vous devriez pouvoir utiliser la méthode DataTable.Select () . Vous pouvez nous comme ça.

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

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

4
Kibbee

vous pouvez définir la base de données sur IEnumberable et utiliser linq pour vérifier si les valeurs existent . consultez ce lien

LINQ Query on Datatable pour vérifier si un enregistrement existe

l'exemple donné est 

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

vous pouvez compléter où avec tout

0
Blast_dan