Не могу понять в чем ошибка Код |
public static IQueryable<TEntity> LikeAny<TEntity>( this IQueryable<TEntity> query, Expression<Func<TEntity, string>>[] selectors, IEnumerable<string> values) { if (selectors == null) { throw new ArgumentNullException("selector"); } if (values == null) { throw new ArgumentNullException("values"); } if (!values.Any()) { return query; }
Expression[] body = new Expression[selectors.Count()]; int i = 0; ParameterExpression[] p = new ParameterExpression[selectors.Count()]; foreach (Expression<Func<TEntity, string>> selector in selectors) { p[i] = selector.Parameters.Single(); var conditions = values.Select(v => (Expression)Expression.Call(typeof(SqlMethods), "Like", null, selector.Body, Expression.Constant("%" + v + "%"))); body[i] = conditions.Aggregate((acc, c) => Expression.Or(acc, c)); i++;
}
var expr = Expression.Lambda<Func<TEntity, bool>>(body.Aggregate((acc, c) => Expression.Or(acc, c)), p); return query.Where(expr); }
|
на предпоследней строке (var expr = Expression.Lambda<Func....) выдает ошибку Код | Incorrect number of parameters supplied for lambda
|
вызывается метод так Код | (from b in Blogs where b.BlogHide == 0 select new BlogsList { Blog_ = b}) .LikeAny(new Expression<Func<BlogsList, string>>[] { s => s.Blog_.BlogMessage, d => d.Blog_.BlogMessage }, terms)
|
|