Sé que puede ver el row.count o tables.count, pero ¿hay otras maneras de saber si un conjunto de datos está vacío?En C#, ¿cuál es la mejor forma de comprobar si un conjunto de datos está vacío?
Respuesta
Yo sugeriría algo así como: -
bool nonEmptyDataSet = dataSet != null &&
(from DataTable t in dataSet.Tables where t.Rows.Count > 0 select t).Any();
ediciones: He limpiado de forma significativa el código después de la debida consideración, creo que esto es mucho más limpio. Muchas gracias a Keith por la inspiración con respecto al uso de .Any().
En línea con la sugerencia de Keith, aquí es una versión método de extensión de este enfoque: -
public static class ExtensionMethods {
public static bool IsEmpty(this DataSet dataSet) {
return dataSet == null ||
!(from DataTable t in dataSet.Tables where t.Rows.Count > 0 select t).Any();
}
}
Nota, como Keith razón, me corrigió en en los comentarios de su puesto, este método funcionará incluso cuando el el conjunto de datos es nulo.
¿Qué hay de malo en
(aDataSet.Tables.Count == 0)
?
parece que el autor define como "conjunto de datos vacío" como conjunto de datos sin mesas o con cualquier número de mesas vacías. – vitule
Si miras la publicación original (haz clic en el enlace editar) verás que se agregó "o tables.count". Antes de ese cambio, mi pregunta era sensata ... –
El problema con eso es que a partir de 2013 ASP.NET 4.0 es que el conjunto de datos puede ser nulo en cuyo caso ese control se bloquea – philw
Para que quede claro, primero debe mirar todas las tablas de datos, y luego ver el recuento de filas para cada DataTable.
He creado una pequeña clase util estática sólo para ese fin
A continuación código debe leer como una sentencia de Inglés.
public static bool DataSetIsEmpty(DataSet ds)
{
return !DataTableExists(ds) && !DataRowExists(ds.Tables[0].Rows);
}
public static bool DataTableExists(DataSet ds)
{
return ds.Tables != null && ds.Tables.Count > 0;
}
public static bool DataRowExists(DataRowCollection rows)
{
return rows != null && rows.Count > 0;
}
Pondré algo así como el código siguiente y listo. Escribir un código legible cuenta.
if (DataAccessUtil.DataSetIsEmpty(ds)) {
return null;
}
creo que este es un lugar donde se puede utilizar un método de extensión en C# 3 para mejorar la legibilidad.
Usando la idea de Kronoz ...
public static bool IsNotEmpty (this dataset)
{
return dataSet != null && (
from DataTable t in dataSet.Tables
where t.Rows.AsQueryable().Any()
select t).AsQueryable().Any();
}
//then the check would be
DataSet ds = /* get data */;
ds.IsNotEmpty();
Debido al hecho de que los métodos de extensión siempre se expanden por el compilador de este va a trabajar incluso si el conjunto de datos que se comprueba es nulo.
En este tiempo de compilación se cambia:
ds.IsNotEmpty();
//becomes
DataSetExtensions.IsNotEmpty(ds);
Es una buena idea, aunque para ser pedante, la línea t.Rows.Any() no se compilará ya que dataSet.Tables.Rows es un DataRowCollection que no implementa IEnumerable
Ah, y lo siento por ser aún más terriblemente crítico, pero el método de extensión no funcionará cuando el conjunto de datos sea nulo, sino que se generará una NullReferenceException. Además, IsEmpty() devuelve lo contrario de lo que debería: ¡indica si está * no * vacío! – ljs
Gracias por los comentarios. Sin embargo, funcionará con nulos. – Keith
#region Extension methods
public static class ExtensionMethods
{
public static bool IsEmpty(this DataSet dataSet)
{
return dataSet == null || dataSet.Tables.Count == 0 || !dataSet.Tables.Cast<DataTable>().Any(i => i.Rows.Count > 0);
}
}
#endregion
¿Es una buena idea lanzar y luego "manualmente" revisar todas las filas de esa manera? – Kache
- 1. C# DataGridView Comprobar si está vacío
- 2. La mejor manera de comprobar si un archivo DLL es un conjunto CLR en C#
- 3. ¿Cómo comprobar si un valor está vacío en Lua?
- 4. ¿Cómo comprobar si UITextFields está vacío?
- 5. ¿Cuál es la mejor manera de almacenar un conjunto de Delphi en un conjunto de datos?
- 6. La mejor manera de comprobar si un directorio está vacío con php
- 7. Cómo comprobar si un directorio está vacío en Java
- 8. Comprobación de si un vector está vacío
- 9. ¿Cómo comprobar si el objeto JSON está vacío en PHP?
- 10. ¿Cómo comprobar si $ _GET está vacío?
- 11. Cómo comprobar si hay un vacío Gridview
- 12. ¿Cómo comprobar si un archivo está vacío en Bash?
- 13. Cómo detectar cuántas observaciones en un conjunto de datos (o si está vacío), en SAS?
- 14. ¿Cuál es la mejor forma de formatear C# en WordPress?
- 15. Backbone.js: elegante manera de comprobar si los datos de lista y si el conjunto de datos está vacía
- 16. Detectar si un RichTextBox está vacío
- 17. Cómo comprobar si mysql devuelve nulo/vacío
- 18. ¿Por qué la suma de un conjunto vacío es nula?
- 19. ¿Cómo comprobar si HTML sessionStorage no está vacío?
- 20. si _N_ = 1 condición devuelve cierto incluso si el conjunto de datos conjunto está vacío (cero observaciones) en SAS
- 21. Cómo comprobar si un NSPoint está dentro de un NSRect
- 22. cómo comprobar si el campo de archivo está vacío?
- 23. Perl ¿cómo comprobar si la matriz todavía está vacía?
- 24. C# comprobar si un directorio está oculto?
- 25. ¿Cuál es la mejor forma de diseñar una clase C#?
- 26. Comprobar si el directorio está vacío en Ruby
- 27. objetivo comprobar si el campo de texto está vacío
- 28. ¿Cómo comprobar si el objeto JSON está vacío en Java?
- 29. Comprobar si el buzón está vacío en erlang
- 30. Compruebe si un directorio está vacío usando C en Linux
Ouch. Edité esto muchas veces, creo ... ¡ahora es una publicación de la comunidad! Oh bien. :-) – ljs