zoukankan      html  css  js  c++  java
  • C# DataTable中执行DataTable.Select("条件") <转>

    1.在DataTable中执行DataTable.Select("条件")返回DataTable; 

    // <summary> 
    // 执行DataTable中的查询返回新的DataTable 
    // </summary> 
    // dt 是源数据DataTable 
    // condition 是查询条件 

    DataTable newdt = new DataTable(); 
    newdt = dt.Clone(); // 克隆dt 的结构,包括所有 dt 架构和约束,并无数据; 
    DataRow[] rows = dt.Select(conditions); // 从dt 中查询符合条件的记录; 
    foreach (DataRow row in rows)  // 将查询的结果添加到dt中; 

           newdt.Rows.Add(row.ItemArray); 


    有网友说也可以这样:(大家可以试试) 

    DataTable newdt = new DataTable(); 
    newdt=dt.Clone(); 
    DataRow[] dr = dt.Select(condition); 
    for(int i=0;i<dr.Length;i++) 

    newdt.ImportRow((DataRow)dr[i]); 


    2.关于DataTable.Select(); 

    Select方法:   
      Select();//全部查出来   
      Select(过滤条件);//根据过滤条件进行过滤,如Select("columnname1   like   '%xx%'");   
      Select(过滤条件,排序字段);//过滤,并排序,如Select("columnname1   like   '%xx%'",columnname2); 

    完成一个查询,返回一个DataTable后,很多时候都想在查询结果中继续搜索。这时可以使用DataTable.Select方法对结果进行再查询。 
    Select方法有4个重载,我们经常用到的就是DataTable.Select(String) ; 

    下面就说说带一个参数的DataTable.Select(String): 
    这个String的参数是查询的限定式。相当于SQL查询语言中的WHERE语句(不含WHERE),其语法符合SQL语言语法。 (网友的说法)我觉得就是类似sql的语法而已。 

    不过我试了试,不支持BETWEEN AND,举个成功的例子: 

    //FromTime 和ToTime 是两个DateTime类型的变量;occurTime是dTable里面的列名; 

    DataRow[] datarows = dTable.Select("occurTime >= '" + FromTime + "' and occurTime <= '" + ToTime+"'"); 

    DataTable.Select()方法里面支持简单的过滤和排序,不支持复杂的条件过滤和排序。里面的字符串必须是列名和数据,以及>,<,=,<>等关系运算符。举几个例子: 

    DataRow[]   row   =   Detailtb.Select("WZMC='"+MaterialName+"' and   CZ='"+MaterialTexture+"   and   GG='"+MaterialSpecs+"'");    

    DataTable.Select("City Like 'B%'"); 

    DataTable.Select("name='" + a +"'"); 

    一定要注意单引号的问题;我之前就是把变量用双引号括起来了,一直出错,后来在网上查,发现要先有双引号,再用单引号;即‘“变量”’;

  • 相关阅读:
    HDU 2888 Check Corners (模板题)【二维RMQ】
    POJ 3264 Balanced Lineup(模板题)【RMQ】
    poj 3368 Frequent values(经典)【RMQ】
    SPOJ RPLN (模板题)(ST算法)【RMQ】
    UVA 796 Critical Links(模板题)(无向图求桥)
    UVA 315 Network (模板题)(无向图求割点)
    POJ 2029 Get Many Persimmon Trees (模板题)【二维树状数组】
    poj 3067 Japan 【树状数组】
    POJ 2481 Cows 【树状数组】
    POJ 1195 Mobile phones【二维树状数组】
  • 原文地址:https://www.cnblogs.com/jj880715/p/4922681.html
Copyright © 2011-2022 走看看