关于EF的复杂查询的问题.....

TimLee✿ 2014-09-03 11:28:56
数据库有 MenuCode,MenuName,ParentCode 三个字段..

菜单模型有 MenuCode,MenuName,ParentCode,ParentName 四个字段

EF里面有什么办法能一次性的把菜单的list取出来,并且根据ParentCode把每个model的 ParentName 填充呢?

就是把每个菜单的上级菜单的名字通过一个查询或者什么取出来.....

sql的话可以直接这样写 Select A.*,B.MenuName as ParentName From sys_menu A left join sys_menu B on B.MenuCode = A.ParentCode

EF不知道怎么弄了....

想过先把列表取出来,再用foreach赋值..但是感觉好笨啊......
...全文
250 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
TimLee✿ 2014-09-05
  • 打赏
  • 举报
回复
决定不用EF了....
qqm05 2014-09-03
  • 打赏
  • 举报
回复
EF也可以连接查询的,用Join
q107770540 2014-09-03
  • 打赏
  • 举报
回复
Select A.*,B.MenuName as ParentName  From sys_menu A left join sys_menu B on B.MenuCode = A.ParentCode
var q= from a in sys_menu
       join b in sys_menu on a.ParentCode equals b.MenuCode into lg
       from b in lg.DefaultIfEmpty()
       select new {a,ParentName=b==null?"":b.MenuName};
ayanamireizero 2014-09-03
  • 打赏
  • 举报
回复
其实最简单的方法是在模型里建外键,因为看不大懂你3个表的关系,就简单举例一个二级菜单的吧 Parent模型:
public int id{get;set;}

public string name{get;set;}

public icollection<child> child{get;set;}
Child模型:
public int id{get;set;}

public string name{get;set;}

public int parentid{get;set;]

public virsual parent parent{get;set;}
如果要查询某个chilid的父类的名称 则可以: xxxxxxx.parent.name即可
  • 打赏
  • 举报
回复

var sg = (from g in dc.sgroup
                     join gu in dc.sgroupuser on g.gKey equals gu.gKey into l
                     from lgu in l.DefaultIfEmpty()
                      select new { g, lgu }).ToList();
select g.*,gu.* from g loft join gu on gu.gKey = g.gKey
  • 打赏
  • 举报
回复

var list = entities.TableA.GroupJoin(entities.TableB, a => a.uid, a => b.id, (a, b) => new { a, b }).Select(o => o).ToList();
GroupJoin in lambda expresssion

62,047

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧