2011-12-20 38 views
2

我有LINQ,在這種格式我怎麼能做出一個支點此

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

返回我的數據有沒有辦法在此基礎上LINQ

輸出轉換到這個

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

基於@Aducci

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

UPDATE回答

(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

第一部分使用您的LINQ的實體提供,但AsEnumerable後才能返回一個逗號分隔的列表

我改變了過去使用LINQ to對象屬性賦予它一個別名

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) 
        }); 
+0

大家好,感謝要求的基礎上查詢我修改了我的問題,因爲我有錯將您的查詢 – Jorge 2011-12-20 16:46:28

+0

@Jorge - 我更新了答案,讓我知道它是如何工作 – Aducci 2011-12-20 17:05:58