为了账号安全,请及时绑定邮箱和手机立即绑定

LINQ多表动态查询?

LINQ多表动态查询?

绝地无双 2018-12-07 13:04:13
最近做LINQ的一个测试工作,需要把多表的SQL动态条件查询转为LINQ的查询. string strSQL="SELECT A.ORDER,B.ORDITM,A.ORDDAT,A.ORDTIM,B.PRICE FROM A JOIN B ON A.ORDER=B.ORDER JOIN C ON B.PN=C.PN "; if(chkOrderDate.Checked == true) { strSQL+=" A.ORDDAT BETWEEN '"+fromDate.Text.Trim()+"' AND ''"+toDate.Text.Trim()+" "; } if(chkOrderNumber.Checked==true) { strSQL+=" A.ORDER='"+txtOrderNumber.Text.Trim()+"' "; } ....送给DB执行. 请教如何转为LINQ动态查询. 现在已经建立LINQ To SQL 的datacontext  LQ_DBDataContext LQ_DB = new LQ_DBDataContext(ConnectionString); varPO=from a in LQ_DB.A            from b in LQ_DB.B on A.ORDER equals B.ORDER            from c in LQ_DB.C on B.PN equals C.PN           where A.ORDER==txtOrderNumber.Text.Trim() && A.ORDDAT>=Convert.ToInt32(fromDate.Text.Trim()) &&  A.ORDDAT<=Convert.ToInt32(toDate.Text.Trim())           select new {               A.ORDER,              B.ORDITM,             A.ORDDAT,             A.ORDTIM,             B.PRICE           }; //WHERE条件是不对的.应该是实际选择的条件, USER选择的条件不一样, LINQ中的WHERE中的条件应该不一样, 会得出来不同的处理结果. 请教圈子中的高人如何写这样的多表变量条件查询动态LINQ ?
查看完整描述

5 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

比较好用的就是 老外写的一个 LINQ dynamic.cs

PS:LINQ 的动态查询不是很好。

查看完整回答
反对 回复 2019-01-21
?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

Linq的动态查询可以选择三目运算简单方便 例如:

where (string.IsNullOrEmpty(regName.Text.Trim()) ? true : a.name.Contains(regName.Text))
  && (string.IsNullOrEmpty(regTime1.Text.Trim()) ? true : a.pdate.Value > regtime1转换日期后的值)
   && (string.IsNullOrEmpty(regTime2.Text.Trim()) ? true : a.pdate.Value <regtime2转换日期后的值)

前面加条件 如果条件成立则返回true不做筛选条件

如果条件不成立则执行筛选

我只是判断是否为空  你可以加你自己的条件

应该明白了吧

查看完整回答
反对 回复 2019-01-21
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

so great.这样写太easy了.感谢!
查看完整回答
反对 回复 2019-01-21
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

厉害...我怎么没有想到呢.
查看完整回答
反对 回复 2019-01-21
  • 5 回答
  • 0 关注
  • 408 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信