网上找了一天的也没有找到答案,只能向园子里的高手们请教了!
问题:
上图多对多的关系表,我想查询第一张表里的数据,同时将第二张表的数据查询出来,但第二张表有个条件。就是report_status==“等待”,我用下面的语句查询
查询出来的结果中,_meiyin_sam_suit的sam_status不仅仅是“等待”,还有其他,请高手指点一二
估计问题出现在两个from上。你可以看看生成的sql语句是啥。这个我也没深入看。最好用join连接起来。两个from好像是两个单独的查询。
另外,你可以把where直接带在u.meiyin.sam.suits。类似:u.meiyin.sam.suits.where(o=>o.report.status=="等待")
他们两个的关联呢?
多对多的关系表,中间表Entity Framework用关系线代替
你这样写的是cross join
你要的看样子是inner join
from x in tb1
join y in tb2
on ....
where ....
orderby ....
select...;
var data =from u in db.meiyin_sam_suits
join s in db.meiyin_sam
on u.id equals s.sam_id
where s.report_status="等待"
select new {
uid=u.id,
check_up=u.check_up,
report_status=u.report_status,
sid=s.id,
mega_id=s.mega_id,
sam_id=s.sam_id,
......
}
....后面的继续把meiyin_sam的列添加完
干嘛不用include.
include是将导航属性中的所有内容都查询出来,我想将导航属性关联的表中状态等于“等待”的查询出来
用导航属性啊
var result= from x in meiyin_sum where x.meiyin_sum.suits.Any(y => y.report_status == "等待")
select x
我这样试了,这样meiyin_sam_suit中所有内容都查询出来了,怎样才能只查询meiyin_sam_suit中状态等于“等待”的内容
@河马与鳄鱼:导航属性肯定是都出来了,要过滤meiyin_sam_suit,就再写个方法,单独过滤导航属性呗