你好,我也是开发者,我遇到一个问题c#中同一个Datatable中的如何把重复的记录合并起来,怎么解决呀 10

 我来答
匿名用户
2014-06-04
展开全部
就是消除重复项是吧?

dataview dv=new dataview(dt);
datatable dt2=dv.totable(true,"ID","Name");
dv.totable的两个参数true是是否去除重复,第二个是你要现实的字段,这里就显示ID和Name
追问
记录1、[名字]=李洋 [数量]=13
记录2、[名字]=李洋 [数量]=18
我想要的结果是: [名字]=李洋 [数量]=31
追答
这样就查询的时候就消除的重复的所有Name值,根据消除重复的Name查询值,得到数量加起来就是了,有点麻烦
冬天之雪_
2014-06-04 · TA获得超过424个赞
知道小有建树答主
回答量:1304
采纳率:100%
帮助的人:596万
展开全部
这个需要用数据库的查询语句解决。
追问
不要数据库,数据库会,就是代码里面,datatable来控制
追答
其实在select里面写一个group by 最好解决了,但是如果你非要在代码里面写,那么你用linq吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jusenfly
2014-06-04 · 超过21用户采纳过TA的回答
知道答主
回答量:99
采纳率:0%
帮助的人:53.9万
展开全部
所谓的合并是一个怎样的效果呢
追问
记录1、[名字]=李洋 [数量]=13
记录2、[名字]=李洋 [数量]=18
我想要的结果是: [名字]=李洋 [数量]=31
追答
给你个例子 希望能帮到你  最后dt1 就是你要的    
不用linq 的话 就只能遍历了 找到相同项后合并再产生一个table
DataTable dt = new DataTable("TEST");
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("age", typeof(int));

dt.Rows.Add("AA", 10);
dt.Rows.Add("BB", 110);
dt.Rows.Add("CC", 20);
dt.Rows.Add("AA", 120);

var query = (from b in dt.AsEnumerable()
group b by new
{
name = b.Field("name"),
} into g
select new
{
name = g.Select(p => p.Field("name")).First(),
age = g.Sum(p => p.Field("age"))
}).ToList();

DataTable dt1 = dt.Clone();

query.ForEach(p => dt1.Rows.Add(p.name, p.age));
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式