• DataTable数据进行排序、检索、合并、分页、统计


    一、排序

    1 获取DataTable的默认视图

    2 对视图设置排序表达式

    3 用排序后的视图导出的新DataTable替换就DataTable

    (Asc升序可省略,多列排序用","隔开)

    DataView dv = dt.DefaultView; 
    
    dv.Sort = "id Asc,name Desc";
    
    dt = dv.ToTable();

    二、检索

    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();

    三、合并

    假定有2个DataTable:Dt1 , Dt2。表结构一样

    将Dt2接在Dt1后可采用此方法

    dt1.Merge(dt2);

    四、分页

    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语句来获取这些统计了。那么在DataSet/DataTable中是否可以进行统计呢?答案是肯定的。

          在MSDN中,有一篇MS推荐的统计方法,就是逐行对数据进行求和统计,这个方法,其实有等于无(或许这个方法只是针对于DataGrid求取小计用吧),因为这个方法中采用的是DataGrid的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强,这个统计是错误的,因为Compute的统计不具备Sum(Quantity*Price)这样数据的功能。那怎么办呢?

        对于这样复杂数据的统计,我们可以在DataTable中创建一个新的字段来完成,比如Amount,同时设置该字段的Expression为Quantity*Price,这样我们就可以使用统计功能了:

    table.Compute("Sum(Amount)","true");
  • 相关阅读:
    New version of VS2005 extensions for SharePoint 3.0
    QuickPart : 用户控件包装器 for SharePoint Server 2007
    随想
    发布 SharePoint Server 2007 Starter Page
    如何在SharePoint Server中整合其他应用系统?
    Office SharePoint Server 2007 中文180天评估版到货!
    RMS 1.0 SP2
    SharePoint Server 2007 Web内容管理中的几个关键概念
    如何为已存在的SharePoint站点启用SSL
    Some update information about Office 2007
  • 原文地址:https://www.cnblogs.com/mjsh/p/2076139.html
Copyright © 2020-2023  润新知