首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

使用Expression创办动态查询并自定义like方法时,提示“不识别该方法,因此无法转换为存储表达式”

2013-09-26 
使用Expression创建动态查询并自定义like方法时,提示“不识别该方法,因此无法转换为存储表达式”我在wcf ria

使用Expression创建动态查询并自定义like方法时,提示“不识别该方法,因此无法转换为存储表达式”
我在wcf ria中创建了动态查询数据库的方法,并利用自定义的like方法实现模糊识别,但是在调用时却提示:

引用
Load operation failed for query 'getProMainenancesBySearch'. LINQ to Entities 不识别方法“Boolean like(System.String, System.String)”,因此该方法无法转换为存储表达式。


下面是wcf ria 中的代码:

[Query]
public IQueryable<ProMainenance> getProMainenancesBySearch(string queryField, string queryValue)
{
    //s.[queryFiled]
    ParameterExpression param = Expression.Parameter(typeof(ProMainenance), "s");
    Expression selector = Expression.Property(param, typeof(ProMainenance).GetProperty(queryField));
    Expression constant = Expression.Constant(queryValue);
    Expression filter = Expression.Call(typeof(VehicleService).GetMethod("like", BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public), selector, constant);
    Expression<Func<ProMainenance, bool>> pred = Expression.Lambda<Func<ProMainenance, bool>>(filter, param);
    return this.ObjectContext.ProMainenances.Where(pred);
}

static bool like(string a, string b)
{
    return a.Contains(b);
}


请求大哥大姐们解答呀,thx! Linq 动态查询 like
[解决办法]
这种代码自己搜下,很容易找到

http://www.cnblogs.com/JimmyZheng/archive/2012/02/23/2364154.html

热点排行