首页 新闻 搜索 专区 学院

linq 多对多关系表查询 遇到的坎 坎 坎 坎 坎 坎坎 坎 坎!

0
悬赏园豆:10 [已解决问题] 解决于 2017-01-12 14:56

网上找了一天的也没有找到答案,只能向园子里的高手们请教了!

 

问题:

  上图多对多的关系表,我想查询第一张表里的数据,同时将第二张表的数据查询出来,但第二张表有个条件。就是report_status==“等待”,我用下面的语句查询

查询出来的结果中,_meiyin_sam_suit的sam_status不仅仅是“等待”,还有其他,请高手指点一二

鳄鱼鱼鱼的主页 鳄鱼鱼鱼 | 初学一级 | 园豆:195
提问于:2017-01-10 17:13
< >
分享
最佳答案
0

估计问题出现在两个from上。你可以看看生成的sql语句是啥。这个我也没深入看。最好用join连接起来。两个from好像是两个单独的查询。

另外,你可以把where直接带在u.meiyin.sam.suits。类似:u.meiyin.sam.suits.where(o=>o.report.status=="等待")

收获园豆:2
开山怪不怪 | 小虾三级 |园豆:544 | 2017-01-11 11:52
其他回答(5)
0

他们两个的关联呢?

收获园豆:2
Eric.luo | 园豆:853 (小虾三级) | 2017-01-10 17:33

多对多的关系表,中间表Entity Framework用关系线代替

支持(0) 反对(0) 鳄鱼鱼鱼 | 园豆:195 (初学一级) | 2017-01-10 17:39
1

你这样写的是cross join

你要的看样子是inner join

from x in tb1

join y in tb2

on ....

where ....

orderby ....

select...;

Daniel Cai | 园豆:10374 (专家六级) | 2017-01-10 17:55
2

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的列添加完

收获园豆:2
姚小丹 | 园豆:42 (初学一级) | 2017-01-10 17:58
0

干嘛不用include.

收获园豆:2
吴瑞祥 | 园豆:28820 (高人七级) | 2017-01-10 18:00

include是将导航属性中的所有内容都查询出来,我想将导航属性关联的表中状态等于“等待”的查询出来

支持(0) 反对(0) 鳄鱼鱼鱼 | 园豆:195 (初学一级) | 2017-01-11 20:30
0

用导航属性啊

 var result=
  from x in meiyin_sum
  where x.meiyin_sum.suits.Any(y => y.report_status == "等待")  
  select x

 

 

 

收获园豆:2
黄昏MMM | 园豆:320 (菜鸟二级) | 2017-01-11 14:37

我这样试了,这样meiyin_sam_suit中所有内容都查询出来了,怎样才能只查询meiyin_sam_suit中状态等于“等待”的内容

支持(0) 反对(0) 鳄鱼鱼鱼 | 园豆:195 (初学一级) | 2017-01-11 20:33

@河马与鳄鱼:导航属性肯定是都出来了,要过滤meiyin_sam_suit,就再写个方法,单独过滤导航属性呗

支持(0) 反对(0) 黄昏MMM | 园豆:320 (菜鸟二级) | 2017-01-11 20:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册