关于LINQ动态查询中动态选择列的问题! 发在LINQ版无人问津啊~
大家好,李永京博客里有关于动态select的代码,但这段代码在 EF4.4 、 vs2010中会报异常
“无法创建City类型的常量值,此属性只支持基元类型或枚举类型”
//依据IQueryable数据源构造一个查询
IQueryable<City> custs = db.DataBase.Citys;
//组建一个表达式树来创建一个参数
ParameterExpression param =
Expression.Parameter(typeof(City), "c");
//组建表达式树:c.ContactName
Expression selector = Expression.Property(param,
typeof(City).GetProperty("Name"));
Expression pred = Expression.Lambda(selector, param);
//组建表达式树:Select(c=>c.ContactName)
Expression expr = Expression.Call(typeof(Queryable), "Select",
new Type[] { typeof(City), typeof(string) },
Expression.Constant(custs), pred);
//使用表达式树来生成动态查询
IQueryable<string> query = db.DataBase.Citys.AsQueryable()
.Provider.CreateQuery<string>(expr);
//使用GetCommand方法获取SQL语句
//System.Data.Common.DbCommand cmd = db.GetCommand(query);
var result = query.ToList();
[解决办法]
该回复于2013-01-21 16:19:50被管理员删除
[解决办法]
entityframework