如何在C#.net中检查数据集是否为空

时间:2014-12-10 03:56:56

标签: c#

我在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。)因为他指定了表属性的零索引,是假设数据集中只有一个表吗?如果只有一张表,那么我知道这会有效。

2。)但是,如果有多个表,那么我是否正确地说上面的代码不会确定数据集是否为空?

如果我是正确的[#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" );
        }

...问候丹

2 个答案:

答案 0 :(得分:1)

您可以通过此检查。

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

    return true;
}

我希望这会奏效 您可以使用此

进行检查

Fill()方法返回添加的行数。

请参阅DbDataAdapter.Fill方法(数据集)

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

答案 1 :(得分:0)

你是对的,如果有多个表ds.Tables[0].Rows.Count,那么这是无效的测试。

但如果表存在,那么数据集不为空。如果要检查所有数据集表是否为空,则应遍历抛出所有表并查看是否存在任何数据。