c#中同一个Datatable中的如何把重复的记录合并起来,

来源:百度知道 编辑:UC知道 时间:2024/05/12 16:44:38
Datatable中有两个列名,第一个列名是:名字,第二个列名是:数量
这里的有这样的记录:记录1、[名字]=李洋 [数量]=13
记录2、[名字]=李洋 [数量]=18
我想要的结果是: [名字]=李洋 [数量]=31
请给出代码,谢谢!!!
现在因为特殊原因,必须得在datatable里完成,在数据库里做这样的操作是在简单不过了,呵呵这样的问题我不是会来这上面问的,呵呵谢谢你,,,

DataTable dt1 = GetDataTable();//你说的DataTable
DataTable dt2 = dt1.Clone();//复制下你说的那个表的表结构

DataRow[] drs = null;
foreach( DataRow dr in dt1 ) {
drs = dt2.Select( "姓名='" + dr["姓名"].ToString() + "'" );//查找dt2的重复数据
if( drs.Length > 0 ) {
drs["数量"] = drs["数量"] + dr["数量"];//将数量累加
}
else {
dt2.newrow;//dt2里边new一个新行,把数据加进去
}

}

dt2即为所求。

写的有点马虎,没有环境,希望能对你有所帮助

这种需求,在数据库中处理是比较合适的方法

SQL 的写法:

SELECT [名字], SUM([数量]) AS [数量] FROM 表名 GROUP BY [名字]

如果说放入之前能判断一下再放进去的话,你可以设置DATATABLE的PrimaryKey 。但是具体情况一定要先放进去了再来删除或合并相同的记录,好像没有更好的方法,那位如果知道更好的方法请告诉一声,我也想知道。没有别的办法就是只能遍历整个Datatable了,遍历的方法,前面的兄台有写。我觉得设置主键还是有好处的,查找数据还是要方便一些

DataTable d=new DataTable();
int i = 0;
foreach (DataRow dr in d.Table.Rows)
{
if (dr["名字"].ToString() == "李阳")
i += (int)dr["数量"];