2014-12-10 1 views
0

Я видел этот вопрос - как я могу проверить, пуст ли набор данных или нет в C# .net - на сайте для вопросов интервью с C#.Как проверить, пуст ли набор данных или нет в C# .net

Кто-то ответил:

DataSet ds = <get a dataset somehow>; 

if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) 
{ 
    // There is something in the DataSet. 
} 

Я то, что некоторые новые для C#, и я имею в виду, есть больше к этому.

1.) Поскольку он указал нулевой индекс свойства таблиц, является ли предположение, что в наборе данных есть только 1 таблица? Если есть только 1 таблица, то я понимаю, что это сработает.

2.) Однако, если есть более 1 таблицы, то могу ли я сказать, что приведенный выше код НЕ определял бы, является ли набор данных пустым?

Если я прав [# 2], то это будет способ определить, пуст или нет набор данных?

 DataSet ds = <get a dataset somehow>; 

     bool dataFound = false; 

     // Check to see if the dataset actually exists. 
     // Check if it has one or more tables. 

     if(ds != null && ds.Tables.Count > 0) 
     { 
      // Check the row count for each table to see if any one table has data. 
      foreach(System.Data.DataTable table in ds.Tables) 
      { 
       if(table.Rows.Count > 0) 
       { 
        //we have data 
        dataFound = true; 
        break; 
       } 
      } 
     } 

     if(dataFound) 
     { 
      Console.WriteLine("we have data"); 
     } 
     else 
     { 
      Console.WriteLine("we have NO data"); 
     } 

С уважением ... Dan

ответ

0

Вы правы, если есть более чем одна таблица ds.Tables[0].Rows.Count это не действует тест.

Но если таблица существует, то набор данных не пуст. Если вы хотите проверить, пустые ли все таблицы набора данных, то вы должны пересечь все таблицы и посмотреть, существуют ли какие-либо данные.

+0

OK..that является то, что второй набор кода делает. – user3020047

1

вы можете проверить это.

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

    return true; 
} 

Я надеюсь, что это будет работать вы можете проверить его с помощью этого

Метод Fill() возвращает # строк добавляется.

См DbDataAdapter.Fill метод (DataSet)

if(ds.Tables.Count >0) 
{ 
    for(int i=0;i<ds.tables.count;i++) 
    { 
     if(ds.Tables[i].Rows.Count >) 
     { 
      // do your job 
     } 
    } 
} 
+0

Это ошибка, если объект DataSet имеет значение NULL. –

+0

@HarrisYer Я не понял это. спасибо в любом случае –

+0

@HarrisYer Я думаю, что второй и третий будут выполнять работу –

Смежные вопросы