2013-03-14 34 views
0

I'working与项目asp.net MVC 4 在我的控制器我需要返回一个Json函数。 这是我的函数:Linq与两张表

public JsonResult DatosVehiculo(GridSettings grid, string IdReclamo){ 
... 
List<cSindVehiculo> lDvehiculo = Servicio.RetornaDatos<cSindVehiculo>(ref Mensaje, "crdsis.sin_dvehiculo", dvehiculo.Where(), dvehiculo); 
var count = DatosVehiculo.Count(); 
var data = DatosVehiculo.Skip((grid.PageIndex - 1) * grid.PageSize).Take(grid.PageSize).ToArray(); 
var jsonData = new{ 
    total = (int)Math.Ceiling((double)count/grid.PageSize), 
    page = grid.PageIndex, 
    records = count, 
    rows = (
      from m in data 
      select new { 
       id = m.sdv_idreclamo, 
       cell = new object[] { 
        m.sdv_idreclamo, 
        m.sdv_parpieza, 
        m.sdv_parcodclase 
       } 
      });.ToArray() 
}); 
return Json(jsonData, JsonRequestBehavior.AllowGet); 
} 

这回在此格式,例如:

sdv_idreclamo sdv_parpieza sdv_parcodclase 
LP13000394   001   AC 
LP13000394   002   CR 

但烧烤不理解最终用户 我需要,这显示它:

sdv_idreclamo sdv_parpieza sdv_parcodclase 
LP13000394  AMORTIGUADOR ACCESORIOS 
LP13000394 BOMBA DE ACEITE CARROCERIA 

但是这个描述在其他表"crdsis.cfg_parametros"其中:

cp_idparametro cp_descparametro cp_tipoparametro 
0001    AMORTIGUADOR  PIEZA 
0002    BOMBA DE ACEITE  PIEZA 
AC    ACCESORIOS   CODCLASE 
CR    CARROCERIA   CODCLASE 

有了选择,我可以得到这样的:

SELECT 
    crdsis.sin_dvehiculo.sdv_idreclamo, 
    (select crdsis.cfg_parametros.cp_descparametro from crdsis.cfg_parametros where (crdsis.sin_dvehiculo.sdv_parpieza = crdsis.cfg_parametros.cp_idparametro) and crdsis.cfg_parametros.cp_tipoparametro = 'PIEZA') as sdv_parpieza, 
    (select crdsis.cfg_parametros.cp_descparametro from crdsis.cfg_parametros where (crdsis.sin_dvehiculo.sdv_parcodclase = crdsis.cfg_parametros.cp_idparametro) and crdsis.cfg_parametros.cp_tipoparametro = 'CODCLASE') as sdv_parcodclase 
from crdsis.sin_dvehiculo 
where sdv_idreclamo = 'LP13000394' 

我需要修改我的功能public JsonResult DatosVehiculo返回此格式。 如何修改Linq

回答

0

我根据你贴什么的LINQ声明属于相信:

Servicio.RetornaDatos<cSindVehiculo>(ref Mensaje, "crdsis.sin_dvehiculo", dvehiculo.Where(), dvehiculo)

没有更详细,这是很难回答你的问题。您当然可以在页面中的LINQ语句中使用ReturnoDatos的结果,但我认为这是该功能的错误层。

+0

是的,我可以在其他层解决,谢谢给我看问题的另一种观点 – raranibar 2013-03-15 14:25:03