字符串包含在 lambda 反射表达式中

我正在尝试使用此示例以动态方式将表字段名称传递给查询,并避免对每个表字段重复频繁的查询操作。


示例中包含并根据需要编辑的代码如下:


Expression<Func<T, bool>> GreatherThan<T>(string field, string value)

{

    ParameterExpression B = Expression.Parameter(typeof(T));

    return Expression.Lambda<Func<T, bool>>(

        Expression.GreaterThan(

            Expression.PropertyOrField(B, field),

            Expression.Constant(value)),

        B);

}

它适用于数字字段,因为它在Expression我对数字字段(等于、不等于、大于/小于等)所需的每个操作中都有作用。


但似乎没有对字符串的操作,Contains或者类似的。(当然,除了Equal和NotEqual。)


我怎样才能实现以下目标?(现在在语法上是错误的,但它是用于示例目的)


Expression<Func<T, bool>> Contains<T>(string field, string value)

{

    ParameterExpression B = Expression.Parameter(typeof(T));

    return Expression.Lambda<Func<T, bool>>(

        Expression.Contains(

            Expression.PropertyOrField(B, field),

            Expression.Constant(value)),

        B);

}


噜噜哒
浏览 231回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP