猿问

动态生成LINQ查询

我们有一个对象


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'

能做到吗?


Smart猫小萌
浏览 522回答 3
3回答

翻过高山走不出你

您肯定会想看看Dynamic Linq,它将使您可以将查询条件定义为文本。至于动态添加条件,您可以使用与以下类似的语法将条件添加到查询中:if(CategoryIsImportant)    myQuery = myQuery.Where("CategoryId=2");所有这些都可以(很容易地)编码为您选择的XML格式。

慕妹3242003

根据您的问题,我很难分辨,但是在某些情况下,您不需要动态的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#中的短路行为,它的性能仍然很好。
随时随地看视频慕课网APP
我要回答