Как протестировать, если DataSet пуст?

Я изменяю чужой код, где запрос выполняется с помощью следующего:

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(sqlString, sqlConn);
da.Fill(ds);

Как я могу сказать, пуст ли DataSet (т.е. никакие результаты не были возвращены)?

47
задан MCS 4 June 2010 в 17:41
поделиться

3 ответа

Если я правильно понимаю, это должно сработать для вас

if (ds.Tables[0].Rows.Count == 0)
{
    //
}
73
ответ дан 26 November 2019 в 19:21
поделиться

Вам не нужно тестировать набор данных.

Метод Fill() возвращает количество добавленных строк.

См. DbDataAdapter.Fill Method (DataSet)

21
ответ дан 26 November 2019 в 19:21
поделиться

Вы должны перебрать все таблицы и проверить, равно ли table.Rows.Count 0

bool IsEmpty(DataSet dataSet)
{
    foreach(DataTable table in dataSet.Tables)
        if (table.Rows.Count != 0) return false;

    return true;
}

Обновление: поскольку DataTable может содержать удаленные строки RowState = Deleted , в зависимости от то, что вы хотите получить, может быть хорошей идеей вместо этого проверить DefaultView (который не содержит удаленных строк).

bool IsEmpty(DataSet dataSet)
{
    return !dataSet.Tables.Cast<DataTable>().Any(x => x.DefaultView.Count > 0);
}
15
ответ дан 26 November 2019 в 19:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: