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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中同一个Datatable中的如何把重复的记录合并起来,相关的知识,希望对你有一定的参考价值。

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即为所求。

写的有点马虎,没有环境,希望能对你有所帮助
参考技术A 如果说放入之前能判断一下再放进去的话,你可以设置DATATABLE的PrimaryKey 。但是具体情况一定要先放进去了再来删除或合并相同的记录,好像没有更好的方法,那位如果知道更好的方法请告诉一声,我也想知道。没有别的办法就是只能遍历整个Datatable了,遍历的方法,前面的兄台有写。我觉得设置主键还是有好处的,查找数据还是要方便一些 参考技术B 这种需求,在数据库中处理是比较合适的方法

SQL 的写法:

SELECT [名字], SUM([数量]) AS [数量] FROM 表名 GROUP BY [名字]
参考技术C DataTable d=new DataTable();
int i = 0;
foreach (DataRow dr in d.Table.Rows)

if (dr["名字"].ToString() == "李阳")
i += (int)dr["数量"];

return i;
参考技术D public static DataTable ToDt(DataTable dtTemp)
        
            if (dtTemp != null)
            
                DataTable dt = dtTemp;

                //对dt中数据以名称进行升序排序
                DataView dv = new DataView(dt);
                dv.Sort = "OrderNumber asc";
                //去重复数据
                DataTable dtRs = dv.ToTable(true);  
                for (int i = 0; i < dtRs.Rows.Count; i++)
                
                    DataRow temp = dtRs.Rows[i];
                    int Qty = 0; 
                    //循环排序后的数据dv
                    foreach (DataRowView dr1 in dv)
                     
                        if (temp["OrderNumber"].ToString() == dr1["OrderNumber"].ToString())
                        
                            Qty += Convert.ToInt32(dr1["Qty"]);
                            dtRs.Rows[i]["Qty"] = Qty; 
                          
                     
                
                return dtRs;
            
            else
            
                return null;

            
        

C#如何将datatable中的数据批量更新到MYSQL数据库

datatable中的数据就是从数据库表中读取的,我现在想修改了datatable一个数据,然后再更新到数据库这个表中,注意不是重新插入,是把原来数据进行更新!!!谢谢

参考技术A C#利用update更新数据到oracle数据库:
第一步:打开oracle数据库
public static string connString = "";
public static OracleConnection conn = null;

//打开数据库连接
public static bool Open()

//从配置文件中获取连接字符串
//配置文件需要放在项目目录下的bin\Release中
connString = getXmlValue("connString");
conn = new OracleConnection(getXmlValue("connString"));
try

conn.Open();
Console.WriteLine("数据库连接成功");
return true;

catch (System.Exception ex)

Console.Write(ex.Message);
MessageBox.Show("未能连接到数据库");
return false;

第二步:执行更新方法:
public static int update(int ruleId, int equipmentId, String equipmentName, String propertyName, int ruleType, String ruleRequest, String ruleRequestOther, String ruleExplain)

String sql = "update Device_Attr t set t.BASEID = :equipmentId, t.BASENAME = :equipmentName,t.CA_NAME = :propertyName,t.CA_RULETYPE = :ruleType,t.CA_RULETEXT = :ruleRequest,t.CA_RULETEXT2 = :ruleRequestOther,t.CONTENT = :ruleExplain where t.CA_ID =:ruleId";
OracleCommand cmd = new OracleCommand(sql, conn);
OracleParameter param_1 = new OracleParameter(":equipmentId", equipmentId);
cmd.Parameters.Add(param_1);
OracleParameter param_2 = new OracleParameter(":equipmentName", equipmentName + "$");
cmd.Parameters.Add(param_2);
OracleParameter param_3 = new OracleParameter(":propertyName", propertyName);
cmd.Parameters.Add(param_3);
OracleParameter param_4 = new OracleParameter(":ruleType", ruleType);
cmd.Parameters.Add(param_4);
OracleParameter param_5 = new OracleParameter(":ruleRequest", ruleRequest);
cmd.Parameters.Add(param_5);
OracleParameter param_6 = new OracleParameter(":ruleRequestOther", ruleRequestOther);
cmd.Parameters.Add(param_6);
OracleParameter param_7 = new OracleParameter(":ruleExplain", ruleExplain);
cmd.Parameters.Add(param_7);
OracleParameter param_8 = new OracleParameter(":ruleId", ruleId);
cmd.Parameters.Add(param_8);
int result = cmd.ExecuteNonQuery();
return result;

以上是关于c#中同一个Datatable中的如何把重复的记录合并起来,的主要内容,如果未能解决你的问题,请参考以下文章

C#编程中如何改变DataTable里的某一条记录?

Datatable C# - 如何根据 ID 从一个表中获取详细记录及其关联的另一表中的子记录

如何将旧的 mdb-database 导入 C# DataTable [重复]

如何清空C#中dataGridView的某一行数据??

在C#中进行DataTable操作:根据列数据插入一些汇总行

c#中datatable如何去除重复数据