zoukankan      html  css  js  c++  java
  • DataTable的筛选,过滤后绑定数据源的两种方法(DataTable的select和使用linq返回List集合)

    一般数据处理使用DataTable的情况会很多,而我们很多时候会对得到的DataTable的数据进行筛选后绑定到Combobox、GridView、Repeat等控件中,现在分享一下两种DataTable在C#程序中的筛选处理方式。

    我们先手动创建一个DataTable

         DataTable dt=new DataTable();

         DataColumn dtc = new DataColumn("id",typeof(string));
                dt.Columns.Add(dtc);

                dtc = new DataColumn("name",typeof(string));
                dt.Columns.Add(dtc);

                dtc = new DataColumn("tel",typeof(Int32));
                dt.Columns.Add(dtc);

                //添加数据到DataTable
                DataRow dr = dt.NewRow();
                dr["id"] = "1";
                dr["name"] = "张三";
                dr["tel"] = 54531;
                dt.Rows.Add(dr);
     

    第一种DataTable常规的Select。

      // 直接用DefaultView按条件返回

                         dt.DefaultView.RowFilter = strExpr;
                         dt.DefaultView.Sort = strSort;
     
    //DataTable筛选,排序返回符合条件行组成的新DataTable
              DataTable dt1 = new DataTable();
                         DataRow[] GetRows = dt.Select(strExpr, strSort);
                         //复制DataTable dt结构不包含数据
                         dt1 = dt.Clone();
                         foreach (DataRow row in GetRows)
                         {
                             dt1.Rows.Add(row.ItemArray);
                         }
                         return dt1;
    其中strExpr是如下

          "id>='3' and name='3--hello'"//支持and

           "id>='3' or id='1'"//支持or

          "name like '%hello%'"//支持like   

    strSort如下

          "id desc"

     

    第二种则是利用linq返回List集合

     var result = ( from DataRow order in dt.Rows
                                  where order["id" ].ToString() == "1"
                                  orderby order["name" ]
                                  select new { id= order["id"], name= order["name" ], tel= order["tel" ] }).ToList();
     
    然后把结果返回绑定到空间中。

     

     

     
  • 相关阅读:
    在eclipse外边打开浏览器
    双开Eclipse
    6.5版本的CentOSLinux
    Intel x86_64 Architecture Background 3
    Java 大数、高精度模板
    Intel x86_64 Architecture Background 2
    Intel x86_64 Architecture Background 1
    Codeforces 999D Equalize the Remainders (set使用)
    Codeforces 996E Leaving the Bar (随机化)
    欧拉函数(小于或等于n的数中与n互质的数的数目)&& 欧拉函数线性筛法
  • 原文地址:https://www.cnblogs.com/lzgeveryday/p/4314286.html
Copyright © 2011-2022 走看看