请教大神,问一个lambda 写法

zjlme 2016-05-03 04:16:14

public class User
{ [Key]
public int ID { set; get; }
public virtual ICollection<Role> Roles { set; get; }
}
public class Role
{
[key]
public int id;
public ICollection<CDC_Info> CDC_Infos { set; get; }

public ICollection<User> Users { set; get; }
}
public class CDC_Info
{
[Key]
public int ID { set; get; }
public ICollection<Role> Roles { set; get; }
}


这个多对多的关系,我用CODEFIRST做的,现在知道USER 的ID为1 , 查询这个用户关联的CDC_INFO
...全文
247 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjlme 2016-05-04
  • 打赏
  • 举报
回复
谢谢各位,会了 db.Users.Where(p => p.ID == this.loginuser.ID).SelectMany(o => o.Roles).SelectMany(c => c.CDC_Infos);
为轮子而生 2016-05-04
  • 打赏
  • 举报
回复
引用 1楼Poopaye 的回复:
虽然看不懂,不过可以指正你,那叫linq,不是lambda
也可以用lambda写的 设指定的User为U,可供查询的角色集合为Roles,先获取到他的角色: R = Roles.Find(role=>role.Users.IndexOf(U)>=0); 再找到CDC_Info: Info = R.CDC_Infos.Find(info=>info.Roles.IndexOf(R)>=0);
tinydyw 2016-05-03
  • 打赏
  • 举报
回复
上面写错了.. from b in db.CDC_INFO where b.RoleId in ( from c in db.User where c.UserId==1 select c.RoleId ) select { //这里写具体查询的列名... }
zjlme 2016-05-03
  • 打赏
  • 举报
回复
引用 5 楼 tinydyw 的回复:
from b in db.Role where b.RoleId in ( from c in db.User where c.UserId==1 select c.RoleId ) select b.CDC_INFOID 话说cdcinfo里根本没内容啊= =..
CDC_INFOID可以加个 CDC_NAME 什么的字段,我简写了
Poopaye 2016-05-03
  • 打赏
  • 举报
回复
引用 2 楼 zjlme 的回复:
lambda 也可以啊, db.user.where() linq 是 var s =from s in db.users
这两个统统叫linq lambda是指带有"=>"的表达式
tinydyw 2016-05-03
  • 打赏
  • 举报
回复
from b in db.Role where b.RoleId in ( from c in db.User where c.UserId==1 select c.RoleId ) select b.CDC_INFOID 话说cdcinfo里根本没内容啊= =..
zjlme 2016-05-03
  • 打赏
  • 举报
回复
求大神,习惯了SQL脚本,这个写不来啊
zjlme 2016-05-03
  • 打赏
  • 举报
回复
lambda 也可以啊, db.user.where() linq 是 var s =from s in db.users
Poopaye 2016-05-03
  • 打赏
  • 举报
回复
虽然看不懂,不过可以指正你,那叫linq,不是lambda

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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