Форум программистов, компьютерный форум, киберфорум
LINQ
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
8 / 8 / 3
Регистрация: 15.08.2009
Сообщений: 132
1

Неверное количество параметров, заданных для лямбда-объявления

16.08.2012, 14:18. Показов 2257. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Написал расширитель

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public static IQueryable<TEntity> WhereIn<TEntity, TValue>(this IQueryable<TEntity> query, Expression<Func<TEntity, TValue>> min, Expression<Func<TEntity, TValue>> max, IEnumerable<SelectFilter> collection)
        {
            ParameterExpression pMin = min.Parameters.Single();
            ParameterExpression pMax = max.Parameters.Single();
 
            if (!collection.Any())
            {
                return query.Where(x => false);
            }
 
            if (collection.Count() > 30000)
            {
                throw new ArgumentException("Collection too large - execution will cause stack overflow", "collection");
            }
 
            IEnumerable<Expression> greaterOrEqual =
                collection.Select(
                    value =>
                    (Expression)
                    Expression.And(
                        Expression.GreaterThanOrEqual(min.Body, Expression.Constant(Convert.ToDecimal(value.Value.Split(new[] { '-' }).FirstOrDefault()), typeof(TValue))),
                        Expression.LessThanOrEqual(max.Body, Expression.Constant(Convert.ToDecimal(value.Value.Split(new[] { '-' }).LastOrDefault()), typeof(TValue)))));
 
            Expression body = greaterOrEqual.Aggregate(Expression.Or);
            return query.Where(Expression.Lambda<Func<TEntity, bool>>(body, pMin, pMax));
        }
При попытке вернуть значение вылетает ошибка
Неверное количество параметров, заданных для лямбда-объявления
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2012, 14:18
Ответы с готовыми решениями:

Неверное количество фактических параметров
неверное количество фактических параметров pascal abc program p4; const n=5; type mas=array...

Неверное количество параметров процедуры
Помогите! На строке с командой &quot;close(f)&quot; мне выдаёт ошибку: &quot;Неверное количество параметров...

Неверное количество фактических параметров
Program laba6; var tip:array of string; har:array of string; ind:array of string; dvi:array of...

Неверное количество параметров функции
Как исправить ошибку мою в PascalABC.NET (Неверное количество параметров функции) ? Код...

12
430 / 431 / 93
Регистрация: 16.07.2012
Сообщений: 886
16.08.2012, 17:03 2
Приведите пожалуйста работающий пример который бы ошибку выдавал.
0
8 / 8 / 3
Регистрация: 15.08.2009
Сообщений: 132
16.08.2012, 18:55  [ТС] 3
Цитата Сообщение от canopen Посмотреть сообщение
Приведите пожалуйста работающий пример который бы ошибку выдавал.
Не совсем понятно что Вы имеете виду
0
430 / 431 / 93
Регистрация: 16.07.2012
Сообщений: 886
16.08.2012, 19:01 4
Ну у меня например ваш код нормально без ошибок компилируется. Или ошибка во время выполнения возникает?
0
8 / 8 / 3
Регистрация: 15.08.2009
Сообщений: 132
16.08.2012, 20:14  [ТС] 5
Цитата Сообщение от canopen Посмотреть сообщение
Ну у меня например ваш код нормально без ошибок компилируется. Или ошибка во время выполнения возникает?
Да он грохаеться при выполнения
0
Заблокирован
17.08.2012, 02:44 6
Цитата Сообщение от Грифин Посмотреть сообщение
C#
1
if (collection.Count() > 30000)
Фу-фу-фу так делать.
0
8 / 8 / 3
Регистрация: 15.08.2009
Сообщений: 132
17.08.2012, 02:51  [ТС] 7
Цитата Сообщение от NightmareZ Посмотреть сообщение
Фу-фу-фу так делать.
Это почему? Потом я спрашиваю не как хорошо, а как чтобы работала
0
Заблокирован
17.08.2012, 03:36 8
Цитата Сообщение от Грифин Посмотреть сообщение
Это почему?
Потому что цифры с потолка взяты.
0
8 / 8 / 3
Регистрация: 15.08.2009
Сообщений: 132
17.08.2012, 03:39  [ТС] 9
Цитата Сообщение от NightmareZ Посмотреть сообщение
Потому что цифры с потолка взяты.
Как раз нет Если число объектов в коллекции будет больше 30 тыс будет переполнения.
0
Заблокирован
17.08.2012, 22:16 10
Цитата Сообщение от Грифин Посмотреть сообщение
Как раз нет Если число объектов в коллекции будет больше 30 тыс будет переполнения.
А я вот утверждаю, что на некотором другом компьютере переполнение будет, когда количество объектов перевалит за 28374 (тоже с потолка взято).
0
8 / 8 / 3
Регистрация: 15.08.2009
Сообщений: 132
18.08.2012, 04:40  [ТС] 11
Цитата Сообщение от NightmareZ Посмотреть сообщение
А я вот утверждаю, что на некотором другом компьютере переполнение будет, когда количество объектов перевалит за 28374 (тоже с потолка взято).
Это пока не Важно. Да и количество объектов в коллекции все равно выше 10 не будет.
0
Заблокирован
19.08.2012, 00:45 12
Цитата Сообщение от Грифин Посмотреть сообщение
Это пока не Важно.
Ну так будет важно потом. Когда ты забудешь о том, что такой грязный хак вставил в код.

Цитата Сообщение от Грифин Посмотреть сообщение
Да и количество объектов в коллекции все равно выше 10 не будет.
Тогда зачем такую фигню вообще писать?
0
8 / 8 / 3
Регистрация: 15.08.2009
Сообщений: 132
19.08.2012, 05:41  [ТС] 13
Лучший ответ Сообщение было отмечено OwenGlendower как решение

Решение

Цитата Сообщение от NightmareZ Посмотреть сообщение
Ну так будет важно потом. Когда ты забудешь о том, что такой грязный хак вставил в код.
Да все равно макс что будет это 200.

Цитата Сообщение от NightmareZ Посмотреть сообщение
Тогда зачем такую фигню вообще писать?
Код не я писал я взял его на буржуйском блоге. Я только переделал часть которая генерирует выражение. И хватит тут флейм разводить.

Кого интересует есть решение, мне уже помогли

Конечный результат будет выглядит так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public static IQueryable<TEntity> WhereIn<TEntity, TValue>(this IQueryable<TEntity> query, Expression<Func<TEntity, TValue>> min, Expression<Func<TEntity, TValue>> max, IEnumerable<SelectFilter> collection)
        {
            if (!collection.Any())
            {
                return query.Where(x => false);
            }
 
            if (collection.Count() > 30000)
            {
                throw new ArgumentException("Collection too large - execution will cause stack overflow", "collection");
            }
 
 
            if (min.Body.NodeType != ExpressionType.MemberAccess || max.Body.NodeType != ExpressionType.MemberAccess)
            {
                throw new ArgumentException("Fuck off");
            }
 
            var param = Expression.Parameter(typeof(TEntity), "i");
 
            Expression expr = null;
 
            foreach (var selectFilter in collection)
            {
                var split = selectFilter.Value.Split('-');
                var minimum = Decimal.Parse(split[0]);
                var maximum = Decimal.Parse(split[1]);
 
                var minMemberAccess = Expression.MakeMemberAccess(param, ((MemberExpression)min.Body).Member);
                var maxMemberAccess = Expression.MakeMemberAccess(param, ((MemberExpression)max.Body).Member);
 
                var andExpression = Expression.And(
                    Expression.GreaterThanOrEqual(minMemberAccess,
                                                  Expression.Constant(minimum, typeof(decimal))),
                    Expression.LessThanOrEqual(maxMemberAccess,
                                               Expression.Constant(maximum, typeof(decimal))));
 
                if (expr == null)
                {
                    expr = andExpression;
                }
                else
                {
                    expr = Expression.Or(expr, andExpression);
                }
            }
 
            var body = Expression.Equal(expr, Expression.Constant(true));
            var lambda = Expression.Lambda<Func<TEntity, bool>>(body, param);
            return query.Where(lambda);
        }
0
19.08.2012, 05:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2012, 05:41
Помогаю со студенческими работами здесь

Неверное количество фактических параметров
function dv(x:integer):string; var a,b:string; begin a:='0';b:='1'; while x&lt;&gt;0 do...

Ошибка: неверное количество фактических параметров
При таком коде выдает ошибку: неверное количество фактических параметров. В чем может быть проблема...

Ошибка: неверное количество фактических параметров
Помогите пожалуйста! Не получается.... Я не понимаю ничего в паскаль а делать нужно... Дважды...

Ошибка: неверное количество фактических параметров
Я не пойму что здесь не так! в 42 строчке эта самая ошибка! program proga; const m=8; n=10;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru