美好的一天
我对某些疑问有点麻烦......也许你可以帮助我......
我想要实现的是将1列连接成1行,我一直在搜索,但是使用lambda表达式找不到任何内容......
现在我有这个SQLFiddle显示我想要实现的目标:http://sqlfiddle.com/#!3/4c237/18 问题是我不知道如何将其转换为lambda表达式或至少Linq
有可能吗? 你们能帮帮我吗?
修改
这样做的目的是用作Radgrid的DataSource。在此之前我只是使用Header Table,但现在我必须使用一个新列并显示所有负责这些操作的人......
我之前的DataSource是这样的:
public IList<DiscrepanciasHeader> regresaListaDiscrepancias()
{
using (CALIDADEntities context = new CALIDADEntities())
{
var regresa = context.DISCREPANCIAS_HEADERS
.Include("DISCREPANCIAS_CAT_TIPO")
.ToList()
.Join(context.ListaEmpleados
,DHH => DHH.ID_AUTOR.ToString()
,LEE => LEE.EMP_NONOMINA
,(DHH, LEE) => new DiscrepanciasHeader(DHH, LEE)
);
return regresa.ToList();
}
}
DISCREPANCIAS_HEADERS是我的Headers表(它有一个FK到DISCREPANCIAS_CAT_TIPO),我不得不做一个.ToList()
,因为我的用户列表(ListaEmpleados)是一个视图,所有内容都是VARCHAR
所以要正确加入这是我能想到的唯一方法(能够在我的ID_AUTOR列中执行ToString()
方法
再次编辑......
我很遗失......我正在关注第二个链接(Using pivot table in linq),但我迷失了SelectMany
,现在我有了这个(我不喜欢这个)。 ..我开始认为SP是解决方案......
DISCREPANCIAS_HEADERS
.Include("DISCREPANCIAS_CAT_TIPO")
.ToList()
.Join(DISCREPANCIAS_ACCIONES
,DH => DH.ID
,DA => DA.ID_HEADER
,(DH, DA) => new{
ID = DH.ID
,NO_PARTE = DH.NO_PARTE
,NO_PROYECTO = DH.NO_PROYECTO
,NO_PO = DH.NO_PO
,CANTIDAD = DH.CANTIDAD
,PROVEEDOR = DH.PROVEEDOR
,TRANSPORTISTA = DH.TRANSPORTISTA
,NO_GUIA = DH.NO_GUIA
,COBO = DH.COBO
,ID_TIPO = DH.ID_TIPO
,TIPO_DISCREPANCIA = DH.DISCREPANCIAS_CAT_TIPO.DESCRIPCION
,STATUS = DH.STATUS
,ID_AUTOR = DH.ID_AUTOR
,FEC_AUTOR = DH.FEC_AUTOR
,ID_RESPONSABLE = DA.ID_RESPONSABLE
})
.Join(ListaEmpleados
,DH => DH.ID_AUTOR.ToString()
,LE => LE.EMP_NONOMINA
,(DH, LE) => new {
ID = DH.ID
,NO_PARTE = DH.NO_PARTE
,NO_PROYECTO = DH.NO_PROYECTO
,NO_PO = DH.NO_PO
,CANTIDAD = DH.CANTIDAD
,PROVEEDOR = DH.PROVEEDOR
,TRANSPORTISTA = DH.TRANSPORTISTA
,NO_GUIA = DH.NO_GUIA
,COBO = DH.COBO
,ID_TIPO = DH.ID_TIPO
,TIPO_DISCREPANCIA = DH.TIPO_DISCREPANCIA
,STATUS = DH.STATUS
,ID_AUTOR = DH.ID_AUTOR
,AUTOR = LE.EMP_NOMBRE
,FEC_AUTOR = DH.FEC_AUTOR
,ID_RESPONSABLE = DH.ID_RESPONSABLE
})
.Join(ListaEmpleados
,DH => DH.ID_RESPONSABLE.ToString()
,LE => LE.EMP_NONOMINA
,(DH, LE) => new {
ID = DH.ID
,NO_PARTE = DH.NO_PARTE
,NO_PROYECTO = DH.NO_PROYECTO
,NO_PO = DH.NO_PO
,CANTIDAD = DH.CANTIDAD
,PROVEEDOR = DH.PROVEEDOR
,TRANSPORTISTA = DH.TRANSPORTISTA
,NO_GUIA = DH.NO_GUIA
,COBO = DH.COBO
,ID_TIPO = DH.ID_TIPO
,TIPO_DISCREPANCIA = DH.TIPO_DISCREPANCIA
,STATUS = DH.STATUS
,ID_AUTOR = DH.ID_AUTOR
,AUTOR = LE.EMP_NOMBRE
,FEC_AUTOR = DH.FEC_AUTOR
,ID_RESPONSABLE = DH.ID_RESPONSABLE
,RESPONSABLE = LE.EMP_NOMBRE
})
.GroupBy(DH => new {
ID = DH.ID
})
你会建议继续这样吗?或诉诸SP?
这是我到目前为止的地方......,实际上并不知道每组只返回1行