使用DataTable进行统计与分析(.net)
来源:互联网 发布:军训的意义 知乎 编辑:程序博客网 时间:2024/05/02 00:09
1. Expression属性
DataColumn有一个Expression属性,可以接收一个以列名为基础的算术表达式。定义了Expression属性的列称为计算列。
以下代码创建表结构:
private void CreateDBStru()
{
DataColumn dc = new DataColumn("ItemName",typeof(string));
dc.ReadOnly = true;
dt.Columns.Add(dc);
dc = new DataColumn("UnitPrice",typeof(float));
dt.Columns.Add(dc);
dc = new DataColumn("Amount",typeof(int));
dt.Columns.Add(dc);
dc = new DataColumn("ItemTotal",typeof(float));
dc.Expression = "UnitPrice*Amount";
dt.Columns.Add(dc);
dt.DefaultView.AllowNew = false;
this.dataGrid1.DataSource = dt;
}随机添加10条记录
private void AddRecord()
{
int count=0;
DataRow dr;
Random ran = new Random();
for(int i=0; i<10; i++)
{
count++;
dr = dt.NewRow();
dr["ItemName"] = "商品" + count.ToString();
dr["UnitPrice"] = ran.NextDouble() * 10;
dr["Amount"] = ran.Next(1,1000);
dt.Rows.Add(dr);
}
}代码中没有一句是直接给ItemTotal赋值,但其值可由计算机自动生成。
如果通过DataRelation定义了数据间的关系,则可以通过计算列对子行进行计算,只需在Expression属性中使用Child关键字,比如假设上面的例子中出现的是另一个DataTable的子表,则在父表中可以建立一个计算列,设置其Expression属性为:
SUM(Child.ItemTotal)
每当子表中ItemTotal列被更新时,父表中对应列自动更新。
2. Compute方法
Datatable的Compute方法可以针对一批数据求和、平均值和方差等。
格式如下:
Object sumObj = dt.Compute("SUM(列名)","筛选条件");//筛选条件为空表示全体
代码示例如下:
private void Analyze()
{
DataTable dtAnalyze = dt.Clone();
DataRow dr = dtAnalyze.NewRow();
dr["ItemName"] = "平均:";
dr["UnitPrice"] = dt.Compute("AVG(UnitPrice)","");
dr["Amount"] = dt.Compute("AVG(Amount)","");
dr["ItemTotal"] = dt.Compute("AVG(ItemTotal)","");
dtAnalyze.Rows.Add(dr);
//dt.Compute("Sum(Age)", "ID like ’%%’").
dr = dtAnalyze.NewRow();
dr["ItemName"] = "最大值:";
dr["UnitPrice"] = dt.Compute("MAX(UnitPrice)","");
dr["Amount"] = dt.Compute("MAX(Amount)","");
dr["ItemTotal"] = dt.Compute("MAX(ItemTotal)","");
dtAnalyze.Rows.Add(dr);
dr = dtAnalyze.NewRow();
dr["ItemName"] = "最小值:";
dr["UnitPrice"] = dt.Compute("MIN(UnitPrice)","");
dr["Amount"] = dt.Compute("MIN(Amount)","");
dr["ItemTotal"] = dt.Compute("MIN(ItemTotal)","");
dtAnalyze.Rows.Add(dr);
dr = dtAnalyze.NewRow();
dr["ItemName"] = "方差:";
dr["UnitPrice"] = dt.Compute("VAR(UnitPrice)","");
dr["Amount"] = dt.Compute("VAR(Amount)","");
dr["ItemTotal"] = dt.Compute("VAR(ItemTotal)","");
dtAnalyze.Rows.Add(dr);
dr = dtAnalyze.NewRow();
dr["ItemName"] = "求和:";
dr["UnitPrice"] = dt.Compute("SUM(UnitPrice)","");
dr["Amount"] = dt.Compute("SUM(Amount)","");
dr["ItemTotal"] = dt.Compute("SUM(ItemTotal)","");
dtAnalyze.Rows.Add(dr);
dtAnalyze.DefaultView.AllowNew = false;
this.dataGrid2.DataSource = dtAnalyze;
}
- 使用DataTable进行统计与分析(.net)
- 使用DataTable进行统计与分析
- datatable使用groupby进行分组统计
- datatable使用groupby进行分组统计
- C# datatable使用groupby进行分组统计
- VB.net 使用LINQ对datatable对象进行查询
- asp.net中对DataTable数据进行排序、检索、合并、分页、统计
- [转]asp.net中对DataTable数据进行排序、检索、合并、分页、统计
- asp.net中对DataTable数据进行排序、检索、合并、分页、统计
- asp.net中对DataTable数据进行排序、检索、合并、分页、统计
- 使用百度统计对网站进行流量分析和统计
- c# datatable 分组与统计
- net[datatable与dataset]
- 使用datatable进行服务端分页
- .NET之DataTable与DataRow
- .net ----DataTable与购物车
- 对指定的DataTable列进行求和统计
- DataTable数据进行排序、检索、合并、分页、统计
- iBATIS In Action:序言和目录
- 关于前台调用后台事件__doPostBack函数
- HtmlGenericControl更改title
- asp.net 从datagrid导出到world
- asp.net导出Excel数据
- 使用DataTable进行统计与分析(.net)
- DataTable中数据记录的统计
- 为ASP.NET控件添加常用的JavaScript操作
- js操作cookies
- 运用httpmode进行身份验证
- ASP.NET 2.0利用Httphandler实现URL重写(伪URL及伪静态)(转)
- ASP.NET (HttpModule,HttpHandler)
- 在asp.net中使用HttpHandler为网站图片添加水印
- IBatisNet系列-执行存储过程