我在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" );
}
...问候丹
答案 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
,那么这是无效的测试。
但如果表存在,那么数据集不为空。如果要检查所有数据集表是否为空,则应遍历抛出所有表并查看是否存在任何数据。