#linq #entity-framework #linq-to-entities
#linq #entity-framework #linq-to-entities
Вопрос:
Допустим, у меня есть объект со следующими свойствами [Id, UserName, ProductName], где Id — это PK, а другие поля не уникальны, поэтому строки с одним и тем же именем пользователя повторяются несколько раз.
Для одного из представлений мне нужно получить коллекцию, которая будет иметь уникальное имя пользователя, а другие поля будут объединены вместе с помощью конкатенации строк или чего-то подобного.
Если у меня есть
[0, John, Alpha]
[1, Mary, Beta]
[2, John, Gamma]
Мне нужен запрос, который бы дал мне коллекцию, например
[John, Alpha Gamma]
[Mary, Beta]
И было бы здорово, если бы все это можно было выполнить на стороне базы данных без загрузки сущностей.
Ответ №1:
Вы ищете 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));
}