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
那样为每个步骤创建新字符串。您能告诉我如何从表中取出而不是从列表中取出吗?