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

动态生成LINQ查询

动态生成LINQ查询

Smart猫小萌 2019-10-17 16:19:41
我们有一个对象public class SomeObject{   public Name {get;set;}   public City {get;set;}   public State {get;set}   //various other parameters.  Let's say there's ~20}是否可以在不重新编译源代码的情况下动态创建新的LINQ查询?而是,查询参数来自在数据库中存储和更新的XML结构。var result = from i in someObj             where              //XML requests Name = 'Bob'...so append this where clause             name = 'Bob'能做到吗?
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

您肯定会想看看Dynamic Linq,它将使您可以将查询条件定义为文本。


至于动态添加条件,您可以使用与以下类似的语法将条件添加到查询中:


if(CategoryIsImportant)

    myQuery = myQuery.Where("CategoryId=2");

所有这些都可以(很容易地)编码为您选择的XML格式。


查看完整回答
反对 回复 2019-10-17
?
慕妹3242003

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

根据您的问题,我很难分辨,但是在某些情况下,您不需要动态的Linq,只需执行此操作即可...


var result = from o in someObj 

             where (Name == null || o.Name == Name)

             && (City == null || o.City == City)

             && (State == null || o.State == State)

             select o;

当相关参数为null时,这将基本上防止过滤数据。由于C#中的短路行为,它的性能仍然很好。


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 521 浏览
慕课专栏
更多

添加回答

举报

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