webform计算某几列结果_利用DataTable.Compute等方法和属性做各种统计(某一列的总和sum、不重复的某列记录数distinct)...
對應(yīng)sql語句
select UserID, UserName, UserMoney from Users
從數(shù)據(jù)庫里利用SqlDataAdapter讀取出DataSet的方法不寫了,這個好簡單,寫統(tǒng)計的辦法
using (DataTable dt = ds.Tables[0])
{
//三個變量分別記錄總記錄數(shù)、不重復(fù)的用戶數(shù)、所有用戶的金額總額
int rowsCount, distinctUserRowsCount, AllUserMoney;
rowsCount = dt.Rows.Count;
distinctUserRowsCount = dt.DefaultView.ToTable(true, new string[1] { "UserName" }).Rows.Count;
AllUserMoney = Convert.ToDecimal(dt.Compute("sum(UserMoney)", ""));
}
用DataView的ToTable方法統(tǒng)計不好的地方在不能帶條件,如果要帶條件,還要對這個結(jié)果集用Select方法過慮數(shù)據(jù),再計算不重復(fù)的數(shù)據(jù),比如統(tǒng)計UserID<10的用戶數(shù):
using (DataTable dtDistinct = new DataTable())
{
//添加兩個列
dtDistinct.Columns.Add(new DataColumn("UserID", dt.Columns["UserID"].DataType));
dtDistinct.Columns.Add(new DataColumn("UserName", dt.Columns["UserName"].DataType));
//把符合條件的數(shù)據(jù)加入dtDistinct準(zhǔn)備用于計算
foreach (DataRow dr in dt.Select("UserID<10"))
{
dtDistinct.Rows.Add(new object[] { Convert.ToInt32(dr["UserID"]), dr["UserName"].ToString() });
}
//計算不重復(fù)的數(shù)據(jù)
countUserName = dtDistinct.DefaultView.ToTable(true, new string[] { "UserName" }).Rows.Count;
}
也可以把DataTable中的各行排序后,用循環(huán)來統(tǒng)計不重復(fù)記錄數(shù)的:
string lastUserName = "";
foreach (DataRow dr in dt.Select("", "UserName"))
{
if (!lastUserName.Equals(dr["UserName"].ToString()))
{
distinctUserRowsCount++;
lastUserName = dr["UserName"].ToString();
}
}
總結(jié)
以上是生活随笔為你收集整理的webform计算某几列结果_利用DataTable.Compute等方法和属性做各种统计(某一列的总和sum、不重复的某列记录数distinct)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java飞行记录器是什么_运行java飞
- 下一篇: 华为mstp多生成树配置_网络工程师(3