Compruebe si el valor existe en la tabla de datos

Tengo DataTable con dos columnas Author y Bookname .

Quiero verificar si el valor de cadena dado Autor ya existe en la DataTable. ¿Hay algún método incorporado para verificarlo, como Arrays array.contains ?

Puede usar LINQ-to-DataSet con Enumerable.Any :

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

Otro enfoque es usar DataTable.Select :

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

P: ¿Qué sucede si no conocemos los encabezados de las columnas y queremos encontrar si existe algún valor de celda PEPSI en las columnas de las filas? Puedo recorrerlo todo para averiguarlo, pero ¿hay una mejor manera? –

Sí, puedes usar esta consulta:

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

Puedes usar Linq. Algo como:

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

agregar a su cláusula de uso:

 using System.Linq; 

y añadir :

System.Data.DataSetExtensions

a las referencias.

Debería poder utilizar el método DataTable.Select () . Puedes hacerlo así.

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

El funciton Select () devuelve una matriz de DataRows para los resultados que coinciden con la instrucción where.

puede establecer la base de datos como IEnumberable y usar linq para verificar si los valores existen. mira este enlace

Consulta LINQ en Datatable para verificar si existe registro

el ejemplo dado es

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

podría complementar donde con cualquier