datos - leer datatable c#
Compruebe si el valor existe en la tabla de datos (5)
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.
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<String>("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<DataColumn>().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<string>("Author").Equals("your lookup value")).Count() > 0;
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
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("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.