废话不多说,直接看代码:
自己构造一个DataTable,然后直接测试
private void button1_Click(object sender, EventArgs e)
{
DataTable table = new DataTable();
table.Columns.Add("Name", Type.GetType("System.String"));//添加Name列,存储数据类型为string
table.Columns.Add("Id", Type.GetType("System.Int32"));//添加Id列,存储数据类型为Int
table.Columns.Add("Age", Type.GetType("System.Int32"));
DataRow newRow = table.NewRow();
newRow["Name"] = "张三";
newRow["Id"] = 11;
newRow["Age"] = 46;
table.Rows.Add(newRow);
DataRow newRow1 = table.NewRow();
newRow = table.NewRow();
newRow["Name"] = "张三";
newRow["Id"] = 22;
newRow["Age"] = 38;
table.Rows.Add(newRow);
newRow = table.NewRow();
newRow["Name"] = "李六";
newRow["Id"] = 64;
newRow["Age"] = 24;
table.Rows.Add(newRow);
newRow = table.NewRow();
newRow["Name"] = "";
newRow["Id"] = 34;
newRow["Age"] = 27;
table.Rows.Add(newRow);
newRow = table.NewRow();
newRow["Name"] = "夏松二";
newRow["Id"] = 19;
newRow["Age"] = 60;
table.Rows.Add(newRow);
//关键代码
//先看第一种筛选的方法-----------------------------
//类似SQL的写法,但不是sql,没有where条件,可以使用>,<,=,<>等简单符号,一般就满足我们正常的需要了,如果特别复杂,就拆开分布处理
DataRow[] dataRows = table.Select(string.Format("Name = '{0}' and ID is not null", "张三"));
//然后把DataRow转成dataTable就可以了,下边我直接封了一个方法
DataTable dt = ToDataTable(dataRows);
dataGridView1.DataSource = dt;
//看第二种筛选的方法-------------------------------
DataView dv = table.DefaultView;
dv.RowFilter = string.Format("Name = '{0}' and ID is not null", "张三");
dv.RowFilter = string.Format("Name like '%{0}%' and ID is not null", "张三");
DataTable dtSelect = dv.ToTable();
dataGridView1.DataSource = dtSelect;
}
public DataTable ToDataTable(DataRow[] rows)
{
if (rows == null || rows.Length == 0) return null;
DataTable tmp = rows[0].Table.Clone(); // 复制DataRow的表结构
foreach (DataRow row in rows)
tmp.Rows.Add(row.ItemArray); // 将DataRow添加到DataTable中
return tmp;
}
看效果:
大功告成