一般數據處理使用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);
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;
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();
然后把結果返回綁定到空間中。
