public void Method1()
{
Datatable dt1 = new DataTable();
Datatable dt2 = new DataTable();
Datatable dt3 = new DataTable();
if (ds.Tables.Count > 0)
{
if (ds.Tables[0].Rows.Count > 0)
dt1 = ds.Tables[0];
if (ds.Tables[1].Rows.Count > 0)
dt2 = ds.Tables[1];
if (ds.Tables[2].Rows.Count > 0)
dt3 = ds.Tables[2];
}
}
在上面的代码中有一种更好的方法可以检查数据集中的确切表数" ds",只要ds有三个表就没有问题但是如果它有一个表就会在第二个表上失败if条件并抛出异常无法找到Table1。关于检查表是否存在的任何指针。
谢谢。
答案 0 :(得分:1)
有几种方法可以做到这一点。例如,如果您仍需要三个DataTable对象,则可以执行以下操作:
public void Method1()
{
DataTable dt1 = ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0 ? ds.Tables[0] : new DataTable();
DataTable dt2 = ds.Tables.Count > 1 && ds.Tables[1].Rows.Count > 0 ? ds.Tables[1] : new DataTable();
DataTable dt3 = ds.Tables.Count > 2 && ds.Tables[2].Rows.Count > 0 ? ds.Tables[2] : new DataTable();
}
更动态的方法是将所有表存储在列表中,如下所示:
public void Method1()
{
List<DataTable> dataTables = new List<DataTable>();
foreach (DataTable dataTable in ds.Tables)
{
if (dataTable.Rows.Count > 0) dataTables.Add(dataTable);
}
}
或使用Linq
public void Method2()
{
List<DataTable> dataTables = ds.Tables.Cast<DataTable>().Where(dataTable => dataTable.Rows.Count > 0).ToList();
}