对DataTable数据进行查询过滤

          //对DataTable数据进行查询过滤并返回DataTable

        //1、DataTable.Select(where);
        //2、DataView.RowFilter
        //3、Linq

        #region 创建一个表dt,并给其添加6行数据
        DataTable dt = new DataTable();
        dt.Columns.Add("ID", typeof(System.Int32));
        dt.Columns.Add("Name", typeof(System.String));
        dt.Columns.Add("Address", typeof(System.String));
        DataRow row1 = dt.NewRow();
        row1[0] = 1;
        row1[1] = "AdminAdmin";
        row1[2] = "Test";
        dt.Rows.Add(row1);
        DataRow row2 = dt.NewRow();
        row2[0] = 2;
        row2[1] = "AdmioknA";
        row2[2] = "Test";
        dt.Rows.Add(row2);
        DataRow row3 = dt.NewRow();
        row3[0] = 3;
        row3[1] = "AdminjunjieAdmin";
        row3[2] = "Test";
        dt.Rows.Add(row3);
        DataRow row4 = dt.NewRow();
        row4[0] = 4;
        row4[1] = "Admokin";
        row4[2] = "Test";
        dt.Rows.Add(row4);
        DataRow row5 = dt.NewRow();
        row5[0] = 5;
        row5[1] = "AdminAokdmijunjien";
        row5[2] = "Test";
        dt.Rows.Add(row5);
        DataRow row6 = dt.NewRow();
        row6[0] = 6;
        row6[1] = "Admin";
        row6[2] = "Test";
        dt.Rows.Add(row6);
#endregion

        //1、使用DataTable.Select(where);
        var newtable1 = dt.Clone();//把源表的结构给新表
        foreach (DataRow row in dt.Select("Name like '%ok%'"))
        {
            newtable1.ImportRow(row);
        }

        //2、使用DataView.RowFilter
        DataView dv = dt.DefaultView; ;
        dv.RowFilter = "Name like '%ok%'";
        var newdatatable2 = dv.ToTable();

        //3、使用linq
        var newtable3 = (from datarow in dt.AsEnumerable() where datarow.Field<string>("Name").IndexOf("ok") > -1 select datarow).CopyToDataTable();

        //如果数据量小,DataTable.Select()与DataView.RowFilter没有什么大的区别。如果数据量大,用DataView.RowFilter则比较快。linq不太了解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值