检查数据集中数据表的有效方法

时间:2017-08-09 23:26:54

标签: c# asp.net c#-4.0 dataset

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。关于检查表是否存在的任何指针。

谢谢。

1 个答案:

答案 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();
}