Как объединить строки с помощью LINQ? - PullRequest
0 голосов
/ 05 октября 2011

Скажем, у меня есть объект со следующими свойствами [Id, UserName, ProductName], где Id - это PK, а другие поля не являются уникальными, поэтому строки с одинаковым именем пользователя повторяются несколько раз.

Для одного из представлений мне нужно получить коллекцию, которая будет иметь уникальное имя пользователя, а другие поля будут объединены с использованием конкатенации строк или чего-то подобного.

Если у меня есть

[0, John, Alpha]
[1, Mary, Beta]
[2, John, Gamma]

Мне нужен запрос, который даст мне коллекцию, такую ​​как

[John, Alpha Gamma]
[Mary, Beta]

И было бы замечательно, если бы все это можно было выполнить на стороне базы данных без загрузки сущностей.

1 Ответ

2 голосов
/ 05 октября 2011

Вы ищете GroupBy():

var results = context.MyEntities.GroupBy( x => x.UserName);

foreach (var item in results)
{
    Console.WriteLine("{0} : {1}", item.Key, string.Join(",", item.Select( x=> x.ProductName));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...