我有一个类似于以下
的数据表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并将结果保存到数据表?
答案 0 :(得分:1)
我们的想法是按照以下方式对表进行分组:
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
和allowGrouping
列做了一些大胆的假设。请确保你的意思。如果没有,则应按所有三列而不是cName
分组。
答案 1 :(得分:1)
您可以这样做:
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);
}