如何动态构建LINQ
我有一个场景,其中我有自定义配置的列名、关联的运算符,如<>=between等,然后是关联的值 我试图确定是否可以使用动态(字符串)where子句构建LINQ查询 我注意到了谓词或Preditcate之类的东西,但这并不是我要说的如何动态构建LINQ,linq,dynamic,operators,Linq,Dynamic,Operators,我有一个场景,其中我有自定义配置的列名、关联的运算符,如=between等,然后是关联的值 我试图确定是否可以使用动态(字符串)where子句构建LINQ查询 我注意到了谓词或Preditcate之类的东西,但这并不是我要说的 有什么建议吗?实际上,C#VS2008示例附带了一个来自Microsoft的特定库(System.Linq.Dynamic)。从 该库包含在上述下载示例的\LinqSamples\DynamicQuery目录中 有关广泛使用的示例,请查看本页:如果您谈论的是字符串Wher
有什么建议吗?实际上,C#VS2008示例附带了一个来自Microsoft的特定库(System.Linq.Dynamic)。从 该库包含在上述下载示例的\LinqSamples\DynamicQuery目录中
有关广泛使用的示例,请查看本页:如果您谈论的是字符串
Where
子句(而不是自己构建表达式等),那么(在3.5示例中,IIRC)就足够了
请注意,下面的示例用于数据库使用;但是,通过对内存中的数据调用.AsQueryable()
,可以将它与LINQ to对象一起使用
您还可以使用表达式树创建动态查询。见:
此问题可能重复“然而动态linq仅适用于IQueryable而不适用于IEnumerable”-请参阅我回复中关于AsQueryable的说明…好的,System.linq.Dynamic乍一看与我想要的完全一样。然而,动态linq只适用于IQueryable而不适用于IEnumerable。虽然Alex是第一个使用动态LINQ库的人,但是缺少的部分是由Marc提出的(很抱歉错过了)。您需要.AsQueryAble()扩展方法才能处理集合。这是一种比使用DynamicIQ更安全的方法,DynamicIQ似乎非常容易受到注入攻击。