zoukankan      html  css  js  c++  java
  • datatable操作集合

    在.NET中使用datatable来操作数据是非常方便的,下面是对DataTable数据实现排序、检索、合并、分页、统计等功能,值得看一下:一、DataTable排序
    1 获取DataTable的默认视图
    2 对视图设置排序表达式
    3 用排序后的视图导出的新DataTable替换就DataTable
    (Asc升序可省略,多列排序用","隔开)
    DataView dv = dt.DefaultView;
    dv.Sort = "id Asc,name Desc";
    dt = dv.ToTable();
    二、DataTable检索
    1 设置查询字符串
    2 使用Select方法获取到所有满足条件的数据行对象数组
    (多项查询条件间,用and隔开.模糊查询使用 like %)
    DataRow[] matches = dt.Select("(id>=20) and (title='会议') and (yearstr like '%2007%')");
    string strName = matches[0]["name"].ToString();
    另外也可以用下面这种方法,将检索出来的新表绑定到GridView
    DataView dv = dt.DefaultView;
    dv.RowFilter = "id>=2";
    this.GridView1.DataSource = dv;
    this.GridView1.DataBind();

    三、DataTable合并
    假定有2个DataTable:Dt1 , Dt2。表结构一样
    将Dt2接在Dt1后可采用此方法
    dt1.Merge(dt2);
    四、DataTable分页
    PagedDataSource pds = new PagedDataSource();
                    pds.AllowPaging = true;
                    pds.DataSource = dvIntegralExpense;
                    pds.AllowPaging = true;
                    pds.PageSize = pager.PageSize;
                    pds.CurrentPageIndex = pager.PageIndex;

                    rptIntegralExpense.DataSource = pds;
                    rptIntegralExpense.DataBind();

    五:
      我们在使用Sql Server这些数据库时,可以轻松的通过Sum、Aver、Count等统计出相关结
     
    果,那么,在已经把数据检索出来的DataSet(DataTable)中呢?特别是通过Web Service获得
     
    了DataSet,这个时候,可是没有办法回头去修改Select语句来获取这些统计了。那么在DataSe
     
    t/DataTable中是否可以进行统计呢?答案是肯定的。
     
      在MSDN中,有一篇MS推荐的统计方法,就是逐行对数据进行求和统计,这个方法,其实有
     
    等于无(或许这个方法只是针对于DataGrid求取小计用吧),因为这个方法中采用的是DataGri
     
    d的ItemDataBind事件来对数据进行累加,同我们手动写代码统计没有什么区别。
      
      本文介绍一个简单的方法,不需要逐条记录进行计算就可以轻松的获得DataTable中的记录
     
    统计结果。这个简单的方法就是调用功能强大的DataTable的函数Compute。
      
      一、调用说明(仅以C#为例,下同):
      
      public object Compute(string strExpression,string strFilter)
      
      参数:
      
      strExpression:要计算的表达式字符串,基本上类似于Sql Server中的统计表达式
      
      strFilter:统计的过滤字符串,只有满足这个过滤条件的记录才会被统计
      
      二、调用举例:
      
      以下示例,假设一个产品销售表table,描述某商场中各促销员销售的实际记录,包含字段
     
    为:姓名(Name)、性别(Sex,0为女,1为男)、生日(Birthday)、销售产品的代码(ProID
     
    )、销售的数量(Quantity)、销售价格(Price)。
      
      1.统计所有性别为女的销售员的数量:
      table.Compute("Count(*)","Sex=0");
      
      2.统计所有销售员中年龄大于20岁的
      table.Compute("Count(*)","Birthday<'"+today);//today为今天的日期字符串
      
      3.统计销售产品的平均价格
      table.Compute("Aver(Price)","true");
      
      4.统计产品代码为1的产品销售数量:
      table.Compute("Sum(Quantity)","ProID=1");
      
      5.统计所有产品的销售总金额:
      要统计总销售金额,由于table中不存在某项产品某个促销员销售的金额数据,但我们可以
     
    通过Quantity*Price来获得。比如:
      table.Compute("Sum(Quantity*Price)","true");
      
      这里一个问题是:DataTable的统计功能没有SqlServer强,这个统计是错误的,因为Compu
     
    te的统计不具备Sum(Quantity*Price)这样数据的功能。那怎么办呢?
      
      对于这样复杂数据的统计,我们可以在DataTable中创建一个新的字段来完成,比如Amount
     
    ,同时设置该字段的Expression为Quantity*Price,这样我们就可以使用统计功能了:
      table.Compute("Sum(Amount)","true");

  • 相关阅读:
    Spring boot unable to determine jdbc url from datasouce
    Unable to create initial connections of pool. spring boot mysql
    spring boot MySQL Public Key Retrieval is not allowed
    spring boot no identifier specified for entity
    Establishing SSL connection without server's identity verification is not recommended
    eclipse unable to start within 45 seconds
    Oracle 数据库,远程访问 ora-12541:TNS:无监听程序
    macOS 下安装tomcat
    在macOS 上添加 JAVA_HOME 环境变量
    Maven2: Missing artifact but jars are in place
  • 原文地址:https://www.cnblogs.com/bobofsj11/p/1979789.html
Copyright © 2011-2022 走看看