DataTable筛选符合条件的DataRow

 

DataTable筛选符合条件的DataRow

 

DataTable中筛选row,在.net framework3.5和4.0中因为有linq,所以会有比较容易,相对的,在framework2.0中,稍显笨拙了点,不过同样很好用。就是使用DataTable.Select()方法,具体定义如下:

public DataRow[] Select (string filterExpression,string sort)

ex:DataRow[] rows=dt.Select("name like '%jake%'","age desc");

筛选出行集合之后,就是要将行集合导入到一个新的DataTable中去。

步骤如下:

1.DataTable dtNew=dt.Clone();新的dtNew和dt具有同样的架构和约束

2.此处需要注意,不能用foreach或for循环的方式将新的rows集合添加到dtNew中,会提示报错,说行是属于其他的DataTable,使用另外一个方法可以实现。

for(int i=0;i<rows.Length;i++)

{

dtNew.ImportRow(rows[i]);

}

查询MSDN,会发现该方法的定义:将 DataRow 复制到 DataTable 中,保留任何属性设置以及初始值和当前值。

备注:调用 NewRow 时,将使用现有的表架构向表中添加一行,并为该行填充默认值,同时将 DataRowState 设置为 Added。 调用 ImportRow 将保留现有的 DataRowState 以及该行中的其他值。

 

 

 

--------------------------------------------------MSDN-----------------------------------------------

private void GetRowsByFilter()
{
    DataTable table = DataSet1.Tables["Orders"];
    // Presuming the DataTable has a column named Date.
    string expression;
    expression = "Date > #1/1/00#";
    DataRow[] foundRows;

    // Use the Select method to find all rows matching the filter.
    foundRows = table.Select(expression);

    // Print column 0 of each returned row.
    for(int i = 0; i < foundRows.Length; i ++)
    {
        Console.WriteLine(foundRows[i][0]);
    }
}

   Select()()()  获取所有 DataRow 对象的数组。
    Select(String)  按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 DataRow 对象的数组。
    Select(String, String)  获取按照指定的排序顺序且与筛选条件相匹配的所有 DataRow 对象的数组。
    Select(String, String, DataViewRowState)  获取与排序顺序中的筛选器以及指定的状态相匹配的所有 DataRow 对象的数组。

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值