Entity framework 如何为实体创建动态Linq,尤其是当列数可能发生变化时
我试图在Linq中创建一个动态查询,以查询我正在使用的2012和SQLServer2005实体 详情如下Entity framework 如何为实体创建动态Linq,尤其是当列数可能发生变化时,entity-framework,Entity Framework,我试图在Linq中创建一个动态查询,以查询我正在使用的2012和SQLServer2005实体 详情如下 create table t1(t1id int, col1 datetime, col2 varchar(500),col3 int) 有以下几种情况 select和where子句的列可以更改 select、where和group by的列可以更改 例1: Select col1, col2 from t1 where col3 = 1 and co1 between '01
create table t1(t1id int, col1 datetime, col2 varchar(500),col3 int)
有以下几种情况
select和where子句的列可以更改
select、where和group by的列可以更改
例1:
Select col1, col2
from t1
where col3 = 1
and co1 between '01 jan 2009' and '31 dec 2013'
例2:
Select col1, count(col2)
from t1
where col3 = 1
and co11 between '01 jan 2009' and '31 dec 2013'
group by co11
我想在2012年制定上述linq至实体如下:
" select "+ @selectclause + " from t1 where " + whereclause
您诚挚的where和Select从句采用表达方式。
其中定义为:
public static IQueryable<TSource> Where<TSource>(this IQueryable<TSource> source, Expression<Func<TSource, bool>> predicate)
Orderby使用类似的表达式。
所以需要动态地构造这些表达式
方案a
可能是最容易学的。具有良好的灵活性
这允许您通过扩展传递字符串。
字符串表达式被转换为表达式
方案B
最好的方法。
LinqKit提供了一些聪明的工具,允许您构造表达式
备选案文C
核心表达式树构造。
强大而复杂
也可以组合选项A、B和/或C。是否要为所有可能的查询返回相同类型的集合?