C# 数据表分组由逗号分隔
我有一个如下所示的数据表C# 数据表分组由逗号分隔,c#,linq,datatable,group-by,C#,Linq,Datatable,Group By,我有一个如下所示的数据表 cname tname text allowgroupping A M good Yes A M bad Yes A M ugly Yes B N sick No B N lovely No C R pathatic Yes 我想按第一列cname对数据表进行
cname tname text allowgroupping
A M good Yes
A M bad Yes
A M ugly Yes
B N sick No
B N lovely No
C R pathatic Yes
我想按第一列cname
对数据表进行分组,结果如下
cname tname text allowgroupping
A M good,bad,ugly Yes
B N sick,lovely No
C R pathatic Yes
我通过循环每一列并进行大量检查来实现这一点,但是如何使用LINQ实现这一点并将结果保存到数据表中呢?我们的想法是按照以下方式对表进行分组:
var groupedDB =
from entry in dataTable
group entry by entry.cName into entryGroup
select new
{
cName = entryGroup.Key,
tName = entryGroup.First().tName,
text = String.Join(",", entryGroup.Select(_=>_.text)),
allowGrouping = entryGroup.First().allowGrouping
};
当然,一旦您这样做,您将看到您正在对
tName
和allowgroup
列进行一些大胆的假设。你一定是有意的。如果没有,则应按所有三列分组,而不是仅按cName
进行分组。您可以执行以下操作:
var query = from row in dataTable.AsEnumerable()
group row by row["cname"] into g
select new { cname = g.Key,
tname = g.First()["tname"] ,
text = String.Join(", ", g.Select(r=>r["text"].ToString()).ToArray()),
allowgrouping = g.First()["allowgroupping"]
};
foreach (var row in query)
{
resultDataTable.Rows.Add(row.cname, row.tname, row.text, row.allowgrouping);
}
这篇文章有你的答案。。。