Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > LINQ (Language-Integrated Query) > Incorrect number of parameters supplied for lambda


Автор: Nickname 29.7.2010, 14:00
Не могу понять в чем ошибка
Код


        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)             

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)