Как я могу сделать поворот для этого - PullRequest
2 голосов
/ 20 декабря 2011

У меня есть linq, который возвращает мои данные в этом формате

Servicio2 | Indicador  | Accion1
Servicio2 | Indicador  | Accion2
Servicio1 | Indicador1 | Accion1
Servicio1 | Indicador1 | Accion2

Есть ли способ преобразовать вывод в этот

Servicio2 | Indicador  | Accion1 , Accion2
Servicio1 | Indicador1 | Accion`, Accion2

На основе этого linq

from A in db.IndicadorServicioAccion
                            .Include("Accion")
                            .Include("IndicadorServicio")
                            .Include(i => i.IndicadorServicio.Indicador)
                    where
                        A.Usuario.IDUsuario == id
                        && A.Permiso == true
                select A) 

ОБНОВЛЕНИЕ на основе ответа @Aducci

(from A in db.IndicadorServicioAccion
                            .Include("Accion")
                            .Include("IndicadorServicio")
                            .Include(i => i.IndicadorServicio.Indicador)
                    where
                        A.Usuario.IDUsuario == id
                        && A.Permiso == true
                group A by new { A.IndicadorServicio.Indicador.nombreIndicador, A.IndicadorServicio.Servicio.Descripcion } into ag
                select new
                     {
                        ag.Key.nombreIndicador,
                        ag.Key.Descripcion,
                        Acciones = ag.Select(x => x.Accion.Descripcion) 
                     }).AsEnumerable().Select(xx => new
                     {
                       xx.Descripcion,
                       xx.nombreIndicador,
                       xx.Acciones.Aggregate((current, next) => current + ", " + next)
                     });

Ставка дает эту ошибку

`Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.`

1 Ответ

1 голос
/ 20 декабря 2011

Первая часть использует вашего поставщика linq-entity, но после AsEnumerable она использует Linq для объектов, чтобы вернуть разделенный запятыми список

Я изменил последнее свойство, чтобы присвоить ему псевдоним

AggregateProperty = xx.Acciones.Aggregate ((текущий, следующий) => текущий + "," + следующий)

 (from A in db.IndicadorServicioAccion
                            .Include("Accion")
                            .Include("IndicadorServicio")
                            .Include(i => i.IndicadorServicio.Indicador)
                    where
                        A.Usuario.IDUsuario == id
                        && A.Permiso == true
                group A by new { A.IndicadorServicio.Indicador.nombreIndicador, A.IndicadorServicio.Servicio.Descripcion } into ag
                select new
                     {
                        ag.Key.nombreIndicador,
                        ag.Key.Descripcion,
                        Acciones = ag.Select(x => x.Accion.Descripcion) 
                     }).AsEnumerable().Select(xx => new
                     {
                       xx.Descripcion,
                       xx.nombreIndicador,
                       AggregateProperty = xx.Acciones.Aggregate((current, next) => current + ", " + next)
                     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...