2012-05-22 26 views
58

Possiedo DataTable con due colonne Autore e Nome libro.Verificare se il valore esiste nel dataTable?

Voglio verificare se il valore di stringa specificato Autore esiste già nel DataTable. C'è qualche metodo integrato per controllarlo, come per gli array array.contains?

+6

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

risposta

157

È possibile utilizzare LINQ-to-DataSet con Enumerable.Any:

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

Un altro approccio è quello di utilizzare DataTable.Select:

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

D: E se non sappiamo le colonne intestazioni e vogliamo trovare se qualsiasi valore di cella PEPSI esiste in tutte le colonne rows'c? Posso fare un loop su tutto a per scoprirlo, ma c'è un modo migliore? -

Sì, è possibile utilizzare questa query:

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

Aggiungi queste 'System.Data.DataSetExtensions' per fare riferimento e' usando System.Linq; 'per usare la classe – AsifAli72090

8

È possibile utilizzare Linq. Qualcosa di simile:

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

è possibile impostare il database come IEnumberable e utilizzare linq per verificare se i valori esistono. controlla questo link

LINQ Query on Datatable to check if record exists

l'esempio dato è

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

si poteva integrare con qualsiasi dove

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

aggiungere al vostro usando clausola:

using System.Linq; 

e aggiungere:

System.Data .DataSetExtensions

alle referenze.

4

Dovresti essere in grado di utilizzare il metodo . Puoi farcela così.

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

Select() funciton restituisce un array di DataRow per le ricerche usa l'istruzione dove.

Problemi correlati