Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

In C#, what is the best way to test if a dataset is empty?

Tags:

c#

.net

I know you can look at the row.count or tables.count, but are there other ways to tell if a dataset is empty?

like image 316
RTipton Avatar asked Sep 06 '08 21:09

RTipton


3 Answers

I would suggest something like:-

  bool nonEmptyDataSet = dataSet != null && 
    (from DataTable t in dataSet.Tables where t.Rows.Count > 0 select t).Any();

Edits: I have significantly cleaned up the code after due consideration, I think this is much cleaner. Many thanks to Keith for the inspiration regarding the use of .Any().

In line with Keith's suggestion, here is an extension method version of this approach:-

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();
    }
  }

Note, as Keith rightly corrected me on in the comments of his post, this method will work even when the data set is null.

like image 169
7 revs Avatar answered Oct 27 '22 01:10

7 revs


What's wrong with

(aDataSet.Tables.Count == 0)

?

like image 44
Joe Ratzer Avatar answered Oct 26 '22 23:10

Joe Ratzer


I have created a small static util class just for that purpose

Below code should read like an English sentence.

    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;
    }

I would just put something like below code and be done with it. Writing a readable code does count.

        if (DataAccessUtil.DataSetIsEmpty(ds)) {
            return null;
        }
like image 27
dance2die Avatar answered Oct 26 '22 23:10

dance2die