加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#表达式返回TSQL Contains关键字

发布时间:2020-12-15 22:04:14 所属栏目:百科 来源:网络整理
导读:我有以下代码: public Expression FilterString(string property,string Value,ParameterExpression parameter){ var getname = Expression.Property(parameter,property); var toLower = Expression.Call(getname,"ToLower",null,null); var contains = Ex
我有以下代码:

public Expression FilterString(string property,string Value,ParameterExpression parameter)
{
    var getname = Expression.Property(parameter,property);

    var toLower = Expression.Call(getname,"ToLower",null,null);

    var contains = Expression.Call(toLower,"Contains",new[] { Expression.Constant(Value.ToString().ToLower()) });

    //This will result in "LOWER(Body) LIKE '%abc123% " but I need "CONTAINS(Body,'abc123')"

    return contains;
}

var parameter = Expression.Parameter(typeof(Message),"message");
var expressionFilter = myclass.FilterString("Body","abc123",parameter);
var lambda = Expression.Lambda(expressionFilter,parameter);

//Apply lambda to EF query object
query = query.Where((Expression<Func<Message,bool>>)lambda);

这会生成一个TSQL LIKE语句,但我希望它能够执行CONTAINS语句.

反正我是否可以修改上面的FilterString方法来实现它呢?

解决方法

它看起来不像你可以使用香草EF,至少根据这里的来源: http://entityframework.codeplex.com/SourceControl/latest#src/EntityFramework/Core/Common/EntitySql/AST/BuiltInKind.cs

您必须将AST添加到AST并生成它. Here’s a basic tutorial on DBProviders.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读