Fiz um join com duas tabelas para popular um menu em uma pagina web. Bem, na tabela mãe eu possuo registros únicos e na filha, claro tenho vários registros para um nregistro da mãe. Até aí beleza. Quando eu trago no join, digamos 12 registros(minha realidade
atual), que equivalem a x registros para cada um na mãe. Isso está correto. Bem, o que passa é na função jquery, eu não estou conseguindo popular o campo mãe(título do menu), devido a essa situação no retorno da função, pois ela traz vários registros e eu
só preciso de um. Bem não sei se é isso. Veja a query e minha jquery.
[HttpPost]
public JsonResult MontaMenuInferior()
{
AgaxturCmsEntities db = new AgaxturCmsEntities();
try
{
var resultado =
(from c in db.TB_MENUSUPERIOR_CATEGORIAS
join s in db.TB_MENUSUPERIOR_SUBCATEGORIAS on c.id equals (s.Id_Categoria)
where c.Ativo == 1 && s.Ativo == 1 && s.CdCliente == 1
select new
{
c.id
,c.Categoria
,s.Id_Categoria
,s.SubCategoria
}).ToList();
return Json(new { resultado }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(new { resultado = ex.Message }, JsonRequestBehavior.AllowGet);
}
}
Agora minha jquery e o html que vai ser populado.
Tentei fazendo uma subquery, porem estou com um problema. Preciso retornar na sub, todos os elementos equivalentes na tabela principal. Se eu coloco um ToList() no final da subquery, não retorna nada. Coloquei um FirstOrDefault, retornou certo, mas apenas
um registro(o primeiro, claro). Como eu faço para resolver isso? Abaixo minha linq com subquery.
[HttpPost]
public JsonResult MontaMenuInferior()
{
AgaxturCmsEntities db = new AgaxturCmsEntities();
try
{
var resultado =
(from c in db.TB_MENUSUPERIOR_CATEGORIAS
//join s in db.TB_MENUSUPERIOR_SUBCATEGORIAS on c.id equals (s.Id_Categoria)
where c.Ativo == 1
select new
{
c.id
,c.Categoria
,sub = (from s in db.TB_MENUSUPERIOR_SUBCATEGORIAS where s.Id_Categoria == c.id
&& s.Ativo == 1 && s.CdCliente == 1
select new { s.Id_Categoria, s.SubCategoria })
==>> NESSE PONTO NÃO SEI O QUE COLOCAR
}).ToList();