public static IQueryable< T> Like< T>(this IQueryable< T> source, string propertyName, string keyword) { var type = typeof(T); var property = type.GetProperty(propertyName); var parameter = Expression.Parameter(type, "p"); var propertyAccess = Expression.MakeMemberAccess(parameter, property); var constant = Expression.Constant(keyword); var like = typeof(string).GetMethod("Contains", new Type[] { typeof(string)}); MethodCallExpression methodExp = Expression.Call(propertyAccess, like, constant); Expression< Func< T, bool>> lambda = Expression.Lambda< Func< T, bool>>(methodExp, parameter); return source.Where(lambda); }