Linq to sql 多行到列

Linq to sql 多行到列,linq-to-sql,linq-to-objects,Linq To Sql,Linq To Objects,我有这样的桌子 ID message 1 jame 1 cluster 1 alpha 2 apple 2 orange 如何使用LINQ给出如下答案 ID Message 1 Jame,cluster,alpha 2 apple,orange 我看到了下面的URL,但它对我不起作用 在上面链接中给出的LINQ中执行string.join时出错 我的代码与上面的链接相同 var result = dataTable.AsEnumerable()

我有这样的桌子

ID  message
1   jame
1   cluster
1   alpha
2   apple
2   orange
如何使用LINQ给出如下答案

ID Message
1  Jame,cluster,alpha
2  apple,orange
我看到了下面的URL,但它对我不起作用 在上面链接中给出的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();

var result=dataTable.AsEnumerable()
.GroupBy(row=>row.Field(“ID”))
.选择(g=>
{
var row=dataTable.NewRow();
row.ItemArray=新对象[]
{
g、 钥匙,
string.Join(“,”,
g、 选择(r=>r.Field(“消息”))
};
返回行;
}).CopyToDataTable();

错误消息:参数2:CONNT无法使用
linq to objects将System.Collection.generic.IEnumerable转换为字符串[]

,您可以执行此操作

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)),
            );

错误包含我们现在缺少的各种有用信息。错误消息:connt从System.Collection.generic.IEnumerable转换为string[],那么您的代码是什么样子的呢?var result=dataTable.AsEnumerable().GroupBy(row=>row.Field(“ID”)。选择(g=>{var row=dataTable.NewRow();row.ItemArray=new object[]{g.Key,string.Join(“,”,g.Select(r=>r.Field(“message”)))};返回行;}).CopyToDataTable();“正式”
string.Join更好,因为它不会像
Aggregate
那样为每个步骤创建新字符串。您能告诉我如何从表中取出而不是从列表中取出吗?