我有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)
});
Bet出现此错误
`Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.`
答案 0 :(得分:1)
第一部分使用您的linq-entities提供程序,但在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)
});