2012-05-22 5 views
58

J'ai DataTable avec deux colonnes Auteur et Bookname.Vérifiez si la valeur existe dans dataTable?

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

+6

LINQ? 'table.Any (t => t.Author == author);' – Davio

Répondre

157

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: Et si nous ne savons pas les têtes de colonnes et nous voulons trouver si une valeur de la cellule PEPSI existent dans toutes les colonnes rows'c? Je peux tout boucler à savoir, mais est-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")); 
+0

Ajoutez ces 'System.Data.DataSetExtensions' à la référence et' using System.Linq; 'à l'utilisation de la classe – AsifAli72090

8

Vous pouvez utiliser Linq. Quelque chose comme:

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

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

LINQ Query on Datatable to check if record exists

l'exemple donné est

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

vous pourriez compléter où toute

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

ajouter à votre article en utilisant:

using System.Linq; 

et ajouter:

System.Data .DataSetExtensions

aux références.

4

Vous devriez pouvoir utiliser la méthode . Vous pouvez nous comme ça. La fonction Select() renvoie un tableau de DataRows pour les résultats correspondant à l'instruction where. La fonction Select() retourne un tableau de DataRows.

Questions connexes