Dim Param = Expression.Parameter(source.ElementType)
Dim columnProperty = Expression.PropertyOrField(Param, Column.Name)
Dim conversion As Expression = Expression.Convert(columnProperty, GetType(String))
Dim likeValue = Expression.Constant(value, GetType(String))
Dim ContainMethodExp = Expression.[Call](columnProperty, GetType(String).GetMethod("Contains"), likeValue)
Dim where = Expression.[Call](GetType(Queryable), "Where", New Type() {source.ElementType}, source.Expression, Expression.Lambda(ContainMethodExp, Param))
此代码适用于列类型的字符串,但它不会为INT32列类型的作品,我试图用expression.convert为int32转换为字符串,但它失败。我能够将成员表达式转换为对象类型,但是linq到实体仅支持原始数据类型。LINQ到实体动态Where子句
请帮忙写关于INT 32型动态过滤相同的lambda表达式
这是我的错误,在发布问题时我没有将“Contains”更改为“Equals”。它正在工作,谢谢。 – tinku99
我试图将整数类型转换为字符串类型,并且使用contains thod为字符串类型。我尝试了int类型的equals方法,但它不起作用。无论如何,你给我的代码工作...谢谢你。 – tinku99