Vérifier si la valeur existe dans dataTable?

j'ai DataTable avec deux colonnes auteur et Bookname .

je veux vérifier si la valeur de chaîne de caractères auteur existe déjà dans le DataTable. Est-il une méthode intégrée pour le vérifier, comme pour les Tableaux array.contains ?

65
demandé sur user5377037 2012-05-22 17:44:17

5 réponses

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 faire si nous ne connaissons pas les en-têtes des colonnes et nous voulons trouver s'il y a la valeur de la cellule PEPSI existent dans toutes les lignes'c colonnes? Je peux boucle tout savoir mais est-il une meilleure façon? -

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"));
168
répondu Tim Schmelter 2016-04-05 07:41:21

vous pouvez utiliser Linq. Quelque chose comme:

bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;
8
répondu mservidio 2012-05-22 13:46:37
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:

Système

.Données.Extensions des données

aux références.

6
répondu Antonio Bakula 2012-05-22 13:49:34

vous devriez pouvoir utiliser le DataTable.Sélectionnez la méthode () . Vous pouvez nous comme ça.

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

la fonction Select() retourne un tableau de valeurs pour les résultats correspondant à l'instruction where.

4
répondu Kibbee 2012-05-22 13:52:15

vous pouvez 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 l'enregistrement existe

l'exemple donné est

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

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

0
répondu Blast_dan 2017-05-23 11:33:26