[轉]asp.net中對DataTable資料進行排序、檢索、合并、分頁、統計

來源:互聯網
上載者:User

asp.net中對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語句來擷取這些統計了。那麼在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");

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.