问题描述
select*fromSYS_biz_feewherelend_biz_id=(selectlend_biz_idfromSYS_lend_bizwherelend_biz_name='服务费')andcost_name=(selectitem_valuefromSYS_ddl_infowhereddl_type_id=55anditem_namelike'%服务费%')问下怎么用EF查询来代替上面的语句。。谢谢在线等急
解决方案
解决方案二:
对你来说,还是先学会把sql语句写好,先别考虑什么EF。你的这个sql语句在语义上就有bug。当子查询得到多条结果时,它会崩溃。当子查询没有结果时,它做了无用功。
解决方案三:
using(testEntitiescontext=newtestEntities()){varq1=(fromsincontext.SYS_lend_bizwheres.lend_biz_name=="服务费"selects).FirstOrDefault();varq2=(fromsincontext.SYS_ddl_infowheres.ddl_type_id==55&&s.item_name.Contains("服务费")selects).FirstOrDefault();varq=fromsincontext.SYS_biz_feewheres.lend_biz_id==q1.lend_biz_id&&s.cost_name==q2.item_valueselects;}
因为需要确保前两个子查询的结果为1条记录,所以使用了FirstOrDefault()方法q就是你要的查询结果,如果要绑定数据,需要先ToList()一下。
解决方案四:
多表查询,或者先用tolist查询条件出来,再来过滤
解决方案五:
--防止出现多条匹配到,你条件里面有稍微修改下select*fromSYS_biz_feewherelend_biz_id=(selecttop1lend_biz_idfromSYS_lend_bizwherelend_biz_name='服务费')andcost_name=(selecttop1item_valuefromSYS_ddl_infowhereddl_type_id=55anditem_namelike'%服务费%')