Linq Aggregate выдает ошибку: «Исключение было выдано целью вызова. // Необработанный тип выражения: 1001» - PullRequest
1 голос
/ 06 октября 2011

Следующая строка кода продолжает вызывать сбои: «Исключение было выдано целью вызова. // Необработанный тип выражения: 1001»

Кто-нибудь может сказать почему, просто взглянув на него?

myList.Aggregate((curmax, x) => (curmax == null || x.LastMonth > curmax.LastMonth ? x : curmax));

Что я получаю, так это то, что curmax - это переменная, которая будет возвращена, и что X - это элемент, который повторяется. но я просто не могу объяснить ошибку.

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Я подозреваю, что это просто операция, которая не поддерживается NHibernate. Однако, если вы просто «после значения с наибольшим значением для LastMonth», вы можете использовать:

var latestPeriod = myList.OrderByDescending(x => x.LastMonth)
                         .FirstOrDefault();

Это было бы значительно проще и с большей вероятностью будет поддерживаться.

0 голосов
/ 07 октября 2011

Я решил, позвонив по номеру .Tolist() из Nhiberate. С этого момента используется метод совокупного расширения от Microsoft Linq (вместо версии Nhibernate), и больше никаких проблем.

myList.ToList().Aggregate((curmax, x) => (curmax == null || x.LastMonth > curmax.LastMonth ? x : curmax));
...