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);
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();
然后把结果返回绑定到空间中。
posted on 2015-03-04 20:51 green hand 阅读(4330) 评论(0) 编辑 收藏 举报