Entity framework 如何为实体创建动态Linq,尤其是当列数可能发生变化时

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

我试图在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 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。

是否要为所有可能的查询返回相同类型的集合?