C# 如何检查数据集中是否存在表

C# 如何检查数据集中是否存在表,c#,C#,我正在用几个表填充数据集。但他们可能并不总是有争吵 因此,我想在尝试访问某个给定表(并导致异常)之前检查该表是否存在 //填充数据集 我尝试了以下选项,但都抛出了一个关于不存在表的异常。我如何检查这个而不出错 备选案文1 if(ds.Tables[1].Rows.Count > 0) 选择2 if(ds.Tables[1] != null) 尝试添加具有名称的表,并使用表名称检查表是否存在: DataSet ds = new DataSet(); var table = ds.Tabl

我正在用几个表填充数据集。但他们可能并不总是有争吵

因此,我想在尝试访问某个给定表(并导致异常)之前检查该表是否存在

//填充数据集

我尝试了以下选项,但都抛出了一个关于不存在表的异常。我如何检查这个而不出错

备选案文1

if(ds.Tables[1].Rows.Count > 0)
选择2

if(ds.Tables[1] != null)

尝试添加具有名称的表,并使用表名称检查表是否存在:

DataSet ds = new DataSet();
var table = ds.Tables.Add();
table.TableName = "some_name";

if (ds.Tables.Contains("some_name")) {
    // do your logic...
    var theTable = ds.Tables["some_name"];
    if (table.Rows.Count == 0) {
    }
}
通过使用表名,您的代码看起来更干净、可读性更强

如果只想迭代所有表,可以:

foreach (DataTable tbl in ds.Tables)
{
    if (tbl.Rows.Count > 0) {
    }
}

如果(ds.Tables.Count>=2)访问不存在的表的行时出错。不过,这个办法奏效了!如果(Tables.Count>1)@John如果访问表[1],则访问的是第二个表,因为表集合是基于0索引的。您可以对每个使用一个
进行迭代,这会提供更清晰的代码,但这只是一个样式首选项。我很高兴它现在对你有用。
foreach (DataTable tbl in ds.Tables)
{
    if (tbl.Rows.Count > 0) {
    }
}