DataTable 取相同ID有关问题
DataTable 取相同ID问题

通过查询得到上图的这次数据 DataTable 我现在想把所有相同user_id的数据合并成一条数据
只是合并img_url列 例如user_id=31的 合并成一条数据后 img_url是333,222,444 有逗号
然后user_id=31的就只有一条数据了
23 NULL 0 333,222,444 0 31 2015-08-27 00:13:00.000
36 NULL 0 789,666,888,777 0 40 2015-08-27 00:12:00.000
35 NULL 0 678 0 55 2015-08-27 00:08:00.000
最后处理完的DataTable 是上面数据这样的
求具体的代码怎么写
已经忙的焦头烂额了
------解决思路----------------------
这个问题虽然可以在代码里解决
不过更可以在刚才你提的那个sq问题l里一并解决,还有你并没有指出时间那列是什么合并规则。
刚才让你把min换成max试下,你并没有试(摊手
------解决思路----------------------
查询的时候先按userid排序,然后循环处理一下,如果这一条userid和上一行的相同,就把当前行的文本追加进上一行的文本中,同时删除这一行
------解决思路----------------------
取出来后linq用Group下,再用String.Join合并即可,其它不需要合并的就用First获取好了
------解决思路----------------------
重发一下
通过查询得到上图的这次数据 DataTable 我现在想把所有相同user_id的数据合并成一条数据
只是合并img_url列 例如user_id=31的 合并成一条数据后 img_url是333,222,444 有逗号
然后user_id=31的就只有一条数据了
23 NULL 0 333,222,444 0 31 2015-08-27 00:13:00.000
36 NULL 0 789,666,888,777 0 40 2015-08-27 00:12:00.000
35 NULL 0 678 0 55 2015-08-27 00:08:00.000
最后处理完的DataTable 是上面数据这样的
求具体的代码怎么写
已经忙的焦头烂额了
------解决思路----------------------
这个问题虽然可以在代码里解决
不过更可以在刚才你提的那个sq问题l里一并解决,还有你并没有指出时间那列是什么合并规则。
刚才让你把min换成max试下,你并没有试(摊手
------解决思路----------------------
查询的时候先按userid排序,然后循环处理一下,如果这一条userid和上一行的相同,就把当前行的文本追加进上一行的文本中,同时删除这一行
------解决思路----------------------
取出来后linq用Group下,再用String.Join合并即可,其它不需要合并的就用First获取好了
------解决思路----------------------
重发一下
string url = string.Empty;
var rowArr = datatable.AsEnumerable().GroupBy(p => p["user_id"]);
for (int r = rowArr.Count() - 1; r >= 0; r--)
{
url = string.Join(",", rowArr.ElementAt(r).Select(u => u["img_url"].ToString()));
for (int p = rowArr.ElementAt(r).Count() - 1; p >= 0; p--)
{
if (p > 0)
{
datatable.Rows.Remove(rowArr.ElementAt(r).ElementAt(p));
}
else
{
rowArr.ElementAt(r).ElementAt(p)["img_url"] = url;
}
}
}