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();
 
然后把結果返回綁定到空間中。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM