Несколько строк в столбце

У меня есть таблица вроде этого

ID message
1 jame
1 cluster
1 alpha
2 apple
2 orange

Как использовать LINQ для ответа, как показано ниже.

ID Message
1 Jame,cluster,alpha
2 apple,orange

Я видел приведенный ниже URL-адрес, но он не работает для меня. Преобразование нескольких строк в один в datatable. Я получаю ошибку при выполнении string.join в LINQ, указанном в приведенной выше ссылке.

Мой код такой же, как выше ссылка

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();
</string></int>

Сообщение об ошибке: Аргумент 2: преобразование Коннота из System.Collection.generic.IEnumerable в строку []

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

licensed under cc by-sa 3.0 with attribution.