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

来源:互联网  责任编辑:小易  时间:2017/1/12 15:21:46
用户提出问题:linq 多对多关系表查询 遇到的坎 坎 坎 坎 坎 坎坎 坎 坎!,具体如下:

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

?

问题:

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

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

通过互联网整理获得以下解决方法:

=================1楼=====================

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

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

=================2楼=====================

他们两个的关联呢?

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

=================3楼=====================

你这样写的是cross join

你要的看样子是inner join

from x in tb1

join y in tb2

on ....

where ....

orderby ....

select...;

=================4楼=====================

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

=================5楼=====================

干嘛不用include.

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

=================6楼=====================

用导航属性啊

 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,就再写个方法,单独过滤导航属性呗

如果您还有更好的解决方法,请在最下面评论中留下您的解决方法


  • 本文相关:
  • 站长必读,如何真正写好一篇原创文章
  • 互联网之路细嗅蔷薇 资深站长分享掘金之道
  • 企业站的站长的工作重心究竟有哪些
  • 浅析:行业门户网站的一些盈利模式
  • 3000IP的企业网站每天订单不到30个的苦恼
  • 网站想内外兼修?先学习提高网站可用性的6大原则
  • 浅谈网页设计中的简约之美
  • 网页改版实战:日本设计师如何彻底优化旅游网站?
  • 网页改版实战!日本设计师如何彻底优化招聘网站?
  • 2015年值得关注的21个网页设计趋势
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2015 www.zgxue.com All Rights Reserved