我如何为此做一个枢轴 [英] How can i made a pivot for this
本文介绍了我如何为此做一个枢轴的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有linq以这种格式返回我的数据
I have linq that return my data in this format
Servicio2 | Indicador | Accion1
Servicio2 | Indicador | Accion2
Servicio1 | Indicador1 | Accion1
Servicio1 | Indicador1 | Accion2
有没有一种方法可以将输出转换为此
Is there a way to transform the output to this
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答案
UPDATE based on @Aducci answer
(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.`
推荐答案
第一部分使用您的linq-entities提供程序,但是在AsEnumerable之后,它使用Linq来处理对象以返回逗号分隔的列表
First portion uses your linq-entities provider, but after AsEnumerable it uses Linq to objects in order to return a comma seperated list
我将最后一个属性更改为别名
I changed the last property to give it an alias
AggregateProperty = xx.Acciones.Aggregate((current,next)=> current +," + next)
(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)
});
这篇关于我如何为此做一个枢轴的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文