webform计算某几列结果_利用DataTable.Compute等方法和属性做各种统计(某一列的总和sum、不重复的某列记录数distinct)...

对应sql语句

select UserID, UserName, UserMoney from Users

从数据库里利用SqlDataAdapter读取出DataSet的方法不写了,这个好简单,写统计的办法

using (DataTable dt = ds.Tables[0])

{

//三个变量分别记录总记录数、不重复的用户数、所有用户的金额总额

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方法统计不好的地方在不能带条件,如果要带条件,还要对这个结果集用Select方法过虑数据,再计算不重复的数据,比如统计UserID<10的用户数:

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

//把符合条件的数据加入dtDistinct准备用于计算

foreach (DataRow dr in dt.Select("UserID<10"))

{

dtDistinct.Rows.Add(new object[] { Convert.ToInt32(dr["UserID"]), dr["UserName"].ToString() });

}

//计算不重复的数据

countUserName = dtDistinct.DefaultView.ToTable(true, new string[] { "UserName" }).Rows.Count;

}

也可以把DataTable中的各行排序后,用循环来统计不重复记录数的:

string lastUserName = "";

foreach (DataRow dr in dt.Select("", "UserName"))

{

if (!lastUserName.Equals(dr["UserName"].ToString()))

{

distinctUserRowsCount++;

lastUserName = dr["UserName"].ToString();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值