DataTable和DataView中对数据的快速筛选

废话不多说,直接看代码:
自己构造一个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;
        }

看效果:
在这里插入图片描述
大功告成

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值