- 浏览:
1522671 次
- 性别:
- 来自:
北京
-
System.Data.DataTable计算功能详解
using
System;
using
System.ComponentModel;
using
System.Data;
using
System.Windows.Forms;
namespace
WindowsApplication1
...
{
public
partial
class
Form1:Form
...
{
public
Form1()
...
{
InitializeComponent();
}
private
void
button1_Click(
object
sender,EventArgse)
...
{
//
System.Data.DataTable计算功能详解,转载请保留以下信息
//
测试环境vs2005,c#
//
作者:jinjazz
//
作者blog:
http://blog.csdn.net/jinjazz/
System.Data.DataTabletable
=
new
DataTable();
//
计算常量,可以没有初始化列
object
test
=
table.Compute(
"
1+1
"
,
""
);
Console.WriteLine(test);
//
test=2;
test
=
table.Compute(
"
1+1
"
,
"
false
"
);
Console.WriteLine(test);
//
test=2;常数计算和filter无关
test
=
table.Compute(
"
abs(1)
"
,
""
);
Console.WriteLine(test);
//
test=null,不知道为这个什么没有抱错,而且返回null,其他的数学函数都会抱错
test
=
table.Compute(
"
2%2
"
,
""
);
Console.WriteLine(test);
//
test=0;
//
其他函数参考下面的计算列
//
初始化datatale
table.Columns.Add(
"
id
"
,
typeof
(
string
));
table.Columns.Add(
"
value
"
,
typeof
(
int
));
for
(
int
i
=
1
;i
<=
10
;i
++
)
...
{
System.Data.DataRowdRow
=
table.NewRow();
dRow[
"
id
"
]
=
"
id
"
+
i.ToString();
dRow[
"
value
"
]
=
i;
table.Rows.Add(dRow);
}
//
test=table.Compute("value+1","true");
/**/
///
/抛出异常,这里必须是聚合函数
//
*************************************支持的聚合函数**********************
//
//
求数量
test
=
table.Compute(
"
count(id)
"
,
"
false
"
);
Console.WriteLine(test);
//
test=0;
test
=
table.Compute(
"
count(id)
"
,
"
true
"
);
Console.WriteLine(test);
//
test=10;
//
求和
test
=
table.Compute(
"
sum(value)
"
,
""
);
Console.WriteLine(test);
//
test=55;
//
test=table.Compute("sum(id)","");
/**/
///
/抛出异常,这里不能是string
//
平均
test
=
table.Compute(
"
avg(value)
"
,
""
);
Console.WriteLine(test);
//
test=5;
//
最小
test
=
table.Compute(
"
min(value)
"
,
""
);
Console.WriteLine(test);
//
test=1;
//
最大
test
=
table.Compute(
"
max(value)
"
,
""
);
Console.WriteLine(test);
//
test=10;
//
统计标准偏差
test
=
table.Compute(
"
StDev(value)
"
,
""
);
Console.WriteLine(test);
//
test=3.02765035409749
//
统计方差
test
=
table.Compute(
"
Var(value)
"
,
""
);
Console.WriteLine(test);
//
test=9.16666666666667
//
复杂计算
test
=
table.Compute(
"
max(value)/sum(value)
"
,
""
);
Console.WriteLine(test);
//
test=0.181818181818182
/**/
/*
******************************************计算列************************
*/
System.Data.DataColumncolumn
=
new
DataColumn(
"
exp1
"
,
typeof
(
float
));
table.Columns.Add(column);
//
简单计算
column.Expression
=
"
value*2
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=2;
//
字符串函数
column.Expression
=
"
len(id)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=3;
//
字符串函数
column.Expression
=
"
len(''+id+'')
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=5;
//
字符串函数
column.Expression
=
"
len(trim(''+id+''))
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=3;
//
字符串函数
column.Expression
=
"
substring(id,3,len(id)-2)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=1;
//
substring的起始字符位置为1不是0
//
类型转换
column.Expression
=
"
convert(substring(id,3,len(id)-2),'System.Int32')*1.6
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=1.6;
//
相当于sqlserver的isnull
column.Expression
=
"
isnull(value,10)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=1;
//
三元运算符,相当于sqlserver的casewhen
column.Expression
=
"
iif(value>5,1000,2000)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=2000;
//
like运算符
column.Expression
=
"
iif(idlike'%1',1000,2000)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=1000;
//
in运算符
column.Expression
=
"
iif(idnotin('id1'),1000,2000)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=2000;
//
嵌套的三元运算
column.Expression
=
"
iif(value>5,1000,iif(idlike'%1',4000,2000))
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=4000;
//
客户端计算所占总数的百分比
column.Expression
=
"
value/sum(value)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=0.01818182
//
客户端计算差值,比如nba常规赛的胜场差
column.Expression
=
"
max(value)-value
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=9
//
***********************父子表计算*************************************/
//
初始化子表,父子表关系
DataTabletableChild
=
new
DataTable();
tableChild.Columns.Add(
"
id
"
,
typeof
(
string
));
tableChild.Columns.Add(
"
value
"
,
typeof
(
int
));
System.Data.DataSetds
=
new
DataSet();
ds.Tables.Add(tableChild);
ds.Tables.Add(table);
DataRelationrelation
=
new
DataRelation(
"
relation
"
,table.Columns[
"
id
"
],tableChild.Columns[
"
id
"
]);
ds.Relations.Add(relation);
for
(
int
i
=
1
;i
<=
10
;i
++
)
...
{
System.Data.DataRowdRow
=
tableChild.NewRow();
dRow[
"
id
"
]
=
"
id1
"
;
dRow[
"
value
"
]
=
i;
tableChild.Rows.Add(dRow);
}
//
计算子表记录数
column.Expression
=
"
count(child(relation).value)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
test=10;
//
计算父子表的百分比
column.Expression
=
"
value/sum(child(relation).value)
"
;
test
=
table.Select(
"
id='id1'
"
)[
0
][
"
exp1
"
];
Console.WriteLine(test);
//
<
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
《Unity中的System.Data.dll文件详解》 在Unity游戏开发中,System.Data.dll是不可或缺的一部分,它是.NET框架的一个重要组件,提供了对数据访问和管理的强大支持。这篇内容将深入探讨System.Data.dll在Unity环境中...
### VB.NET中的DataTable常用方法详解 #### 一、行操作:追加与删除 ##### 行追加 在处理DataTable时,我们常常需要向表中添加新的数据行。以下是几种常用的行追加方法: 1. **`DataTable.Rows.Add()`** 这是最...
首先,要在VS2012中使用SQLite,你需要安装SQLite的.NET数据提供程序,例如System.Data.SQLite库。这个库提供了与.NET Framework的集成,使开发人员能够通过ADO.NET接口操作SQLite数据库。可以通过NuGet包管理器来...
System.Data.DataTable dt1 = new DataTable(); adp.Fill(dt1); ``` ### 5. 数据同步 - **进度条初始化**:设置进度条的初始值和最大值,以便跟踪数据同步过程。 - 代码示例: ```csharp prgBar.Value = 0; ...
static System.Data.DataTable dt_jia = new System.Data.DataTable(); static System.Data.DataTable dt_yi = new System.Data.DataTable(); ``` 这里定义了三个静态变量:一个`Hashtable`用于存储键值对,两个`...
C#操作SQLite数据库帮助类详解 本文档介绍了C#操作SQLite数据库帮助类的实现和封装技巧,主要涉及到C#针对sqlite数据库的连接、查询、分页等各种常见操作。通过本文,读者可以了解如何使用C#语言来操作SQLite数据库...
System.Data.DataTable outPutTable = new System.Data.DataTable(); try { string connstr = "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=\"" + fileName + "\";ExtendedProperties=\"Excel8.0;HDR=YES;...
public static void DataTable2Excel(System.Data.DataTable dtData) { // 创建一个 DataGrid 对象 System.Web.UI.WebControls.DataGrid dgExport = null; // 获取当前的 HttpContext System.Web.HttpContext ...
private System.Data.DataTable dt = null; protected void Page_Load(object sender, EventArgs e) { dt = new System.Data.DataTable(); dt.Columns.Add("date", typeof(DateTime)); dt.Columns.Add(...
### C# DataTable 数据表的操作详解 #### 一、概述 在C#开发中,`DataTable` 是一个非常重要的数据结构,它提供了类似数据库表格的功能,用于存储和操作数据集。本文将详细介绍如何在C#中操作`DataTable`,特别是...
### DataTable导出至Excel知识点详解 #### 一、概述 在.NET开发中,经常需要将数据从`DataTable`导出到Excel文件中,以便于数据分析或进一步处理。本文档将详细介绍如何实现这一功能,包括必要的步骤和技术要点。 ...
此外,`System.Xml`和`System.Xml.Linq`用于XML文档的读写和解析,`System.Json`处理JSON数据,`System.Web`则涉及ASP.NET相关功能,这些都是C#类库中的重要组成部分。 `SharpChinese.rar`这个资源包,通过收集和...
- 绑定到 DataView, DataTable, DataSet:`((DataRowView)Container.DataItem)["字段名"]%>` 或 `((DataRowView)Container.DataItem).Rows[0]["字段名"]%>`。 6. **注意事项** 在使用 `(DataRowView)Container....
以下是如何实现这一功能的示意图解: ```csharp private static System.Data.DataTable GetData(string strPath) { System.Data.DataTable dt = new System.Data.DataTable(); try { string strCon = ...
- 使用`System.Data.DataTable`创建一个新的`DataTable`实例。 - 根据Excel表中的列数,动态添加相应数量的列。示例代码中添加了9列。 2. **打开Excel文件**: - 通过`Microsoft.Office.Interop.Excel....
System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(strsql, objConn); System.Data.OleDb.OleDbDataAdapter ad = new System.Data.OleDb.OleDbDataAdapter(cmd); ad.Fill(dt); } catch...
- **System.Data**: 提供了用于数据访问和处理的类,包括ADO.NET相关的类,比如`DataTable`、`DataSet`等。 - **System.Windows.Forms**: 包含用于创建基于Windows的应用程序的类,支持Windows Forms控件和其他UI...
在.NET框架中,`System.Data.DataTable`类是用于存储、操作和检索数据的强大工具。对于那些需要在内存中处理数据的应用程序来说,`DataTable`提供了一种灵活的方式来组织和管理数据。本文将详细介绍如何在`DataTable...
- `DataTable`是System.Data命名空间下的一个类,用于表示内存中的二维表格。 - 它类似于关系数据库中的表,可以包含多个列(Column),每一列可以有不同的数据类型,以及多行数据(Row)。 2. **创建`DataTable`...