DataRow[] drList;
if (!string.IsNullOrEmpty(ddl_site.SelectedValue))
{
   drList = ds.Tables[0].Select("DEPT='" + ddl_site.SelectedValue + "'");
}
if (!string.IsNullOrEmpty(ddl_location.SelectedValue))
{
  
}
有两个dropdownlist筛选条件
如果dropdownlist不为空,进行筛选
问题是DataTable Select()筛选一次后结果是datarow类型,无法再次进行筛选,急救!!

解决方案 »

  1.   

    DataRow[] drList;
    if (!string.IsNullOrEmpty(ddl_site.SelectedValue))
    {drList = ds.Tables[0].AsEnumerable()
    .Select(d=>d.Field<string>("DEPT)== ddl_site.SelectedValue);
    }
    if (!string.IsNullOrEmpty(ddl_location.SelectedValue))
    {
      drList =drList.Select(d=>d.Field<string>("DEPT)== ddl_location.SelectedValue);}
      

  2.   

    返回的是DataRow[],所以可以使用linq继续查询,使用linq的Where方法:DataTable dt = new DataTable();
    dt.Select(条件).Where(row => Predict(row));
    Predict是筛选条件,可以直接内联写进去这样可以使先任意数量条件的查询DataTable dt = new DataTable();
    dt.Select(条件).Where(row => Predict1(row) && Predict2(row) && Predict3(row) && ...);
      

  3.   

    DataRow[] drList;
    if (!string.IsNullOrEmpty(ddl_site.SelectedValue))
    {drList = ds.Tables[0].AsEnumerable()
    .Where(d=>d.Field<string>("DEPT)== ddl_site.SelectedValue);
    }
    if (!string.IsNullOrEmpty(ddl_location.SelectedValue))
    {
      drList =drList.Where(d=>d.Field<string>("DEPT)== ddl_location.SelectedValue);}
    囧~~~
      

  4.   

    Lambel表达式懂一点,看这个有点疑问,如果
    if (!string.IsNullOrEmpty(ddl_site.SelectedValue))
    {drList = ds.Tables[0].AsEnumerable()
    .Where(d=>d.Field<string>("DEPT)== ddl_site.SelectedValue);
    }没执行
    if (!string.IsNullOrEmpty(ddl_location.SelectedValue))
    {
      drList =drList.Where(d=>d.Field<string>("DEPT)== ddl_location.SelectedValue);}这个执行的话,结果是不是有问题
      

  5.   

    不用linq的方法
    DataTable dt = ds.Tables[0].Copy();
                dt.Clear();
                
                dt.Rows.Add(drList[0].ItemArray);
      

  6.   

    DataSet ds = new DataSet();
                ds.Merge(dt.select(...));
      

  7.   

    DataTable selectedDt = ds.Tables[0].Clone();
    foreach(DataRow row in drList)
    {
        selectedDt.Rows.Add(row);
    }