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

Datatable中有两个列名,第一个列名是:名字,第二个列名是:数量这里的有这样的记录:记录1、[名字]=李洋[数量]=13记录2、[名字]=李洋[数量]=18我想要的... Datatable中有两个列名,第一个列名是:名字,第二个列名是:数量
这里的有这样的记录:记录1、[名字]=李洋 [数量]=13
记录2、[名字]=李洋 [数量]=18
我想要的结果是: [名字]=李洋 [数量]=31
请给出代码,谢谢!!!
现在因为特殊原因,必须得在datatable里完成,在数据库里做这样的操作是在简单不过了,呵呵这样的问题我不是会来这上面问的,呵呵谢谢你,,,
展开
 我来答
百度网友547f201
2009-01-24 · TA获得超过100个赞
知道答主
回答量:144
采纳率:0%
帮助的人:73.8万
展开全部
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即为所求。

写的有点马虎,没有环境,希望能对你有所帮助
zyfzhangyafei
2009-01-28
知道答主
回答量:17
采纳率:0%
帮助的人:19.7万
展开全部
如果说放入之前能判断一下再放进去的话,你可以设置DATATABLE的PrimaryKey 。但是具体情况一定要先放进去了再来删除或合并相同的记录,好像没有更好的方法,那位如果知道更好的方法请告诉一声,我也想知道。没有别的办法就是只能遍历整个Datatable了,遍历的方法,前面的兄台有写。我觉得设置主键还是有好处的,查找数据还是要方便一些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友94f02eb
2009-01-24 · TA获得超过8612个赞
知道大有可为答主
回答量:7955
采纳率:74%
帮助的人:4447万
展开全部
这种需求,在数据库中处理是比较合适的方法

SQL 的写法:

SELECT [名字], SUM([数量]) AS [数量] FROM 表名 GROUP BY [名字]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c687645
2009-01-24 · 超过64用户采纳过TA的回答
知道答主
回答量:376
采纳率:0%
帮助的人:217万
展开全部
DataTable d=new DataTable();
int i = 0;
foreach (DataRow dr in d.Table.Rows)
{
if (dr["名字"].ToString() == "李阳")
i += (int)dr["数量"];
}
return i;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光的ICESKY
2018-05-02
知道答主
回答量:1
采纳率:0%
帮助的人:867
展开全部
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;

            }
        }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式