我有这样的表
ID message
1 jame
1 cluster
1 alpha
2 apple
2 orange
如何使用LINQ给出如下答案
ID Message
1 Jame,cluster,alpha
2 apple,orange
我看到了以下网址,但它不适用于我
Convert multiple rows into single in datatable
我在上面链接中给出的LINQ中执行string.join
时遇到错误。
我的代码与上面的链接相同
var result = dataTable.AsEnumerable()
.GroupBy(row => row.Field<int>("ID"))
.Select(g =>
{
var row = dataTable.NewRow();
row.ItemArray = new object[]
{
g.Key,
string.Join(",",
g.Select(r => r.Field<string>("message")))
};
return row;
}).CopyToDataTable();
错误消息:参数2:Connot从System.Collection.generic.IEnumerable转换为string []
答案 0 :(得分:1)
使用linq-to-objects
,您可以执行此操作
var query = from x in list
group x by x.ID into g
select new
{
ID = g.Key,
Message = string.Join(",", g.Select(x => x. Message)),
};
使用linq-to-sql
,您可以使用linq-to-sql
进行分组,但字符串聚合必须使用linq-to-objects
进行
var query = (from x in db.list
group x by x.ID into g
select g).AsEnumerable().Select(g =>
ID = g.Key,
Message = string.Join(",", g.Select(x => x. Message)),
);