2015-12-04 3 views
1

Я недавно унаследовал иногда багги веб-сайтов моей компании, но не код, который идет с ними, поэтому я декомпилирую двоичные файлы с помощью ilspy. Ошибка, которую я получаю камерой Расширенный в следующем:Функция LINQ анонимного типа не существует в текущем контексте

decimal? locA = (from x in data where x.location == (int?)0 && 
x.invoice.Year == (int?)year && x.invoice.Month == (int?)month 
select x).Sum((<>f__AnonymousType1<Invoice, int?> x) => x.invoice.Month_Value); 

Проблема заключается в линии <>f__AnonymousType1<Invoice, int?>. Сообщение об ошибке (время разработки) заключается в том, что тип f__AnonymousType1 не существует в текущем контексте. (Код декомпилирован, чтобы иметь 15 из них) A не может найти где-либо, где объявляется f__AnonymousType1.

Спасибо за любую помощь в этом ...

Gareth

+0

Эти анонимные типы. Что нужно делать? – usr

+0

Нет документации с сайтами, и все разработчики ушли некоторое время назад, поэтому я пытаюсь интерпретировать сайты, когда я иду. Этот фрагмент выполнен из функции «GuageDataForMonth». Таблица счетов, разбитая по месяцам и регионам. Он пытается суммировать счета за месяц. Поскольку нет исходного кода, мне было интересно, являются ли эти анонимные типы результатом декомпилятора «угадывание». Возвращаемый класс, который должен быть возвращен, представляет собой данные с фиксированной записью с одной записью –

+0

Ваш декомпилятор выглядит плохо, обычно такие шаблоны декомпилируются лучше. Я использую Reflector, который, я думаю, обрабатывает все шаблоны C#. Ваша единственная цель - понять? – usr

ответ

0

Это выглядит, как будто это лямбда-выражение (анонимная функция?) Принимает вид Invoice и ожидает, что тип возврата int?. Это заявлено прямо там. Просто удалите его. Обычно компилятор автоматически генерирует это для вас.

.Sum((<>f__AnonymousType1<Invoice, int?> x) => x.invoice.Month_Value) становится .Sum((x)=>x.invoice.Month_Value) или .Sum(x=>x.invoice.Month_Value)

+0

Извините за отложенный ответ ... В течение нескольких дней позвонил в другой офис. Спасибо за этот ответ. Я получил Reflector 9 (у меня уже было 8 попыток раньше) и внес изменения, но, к сожалению, не смог попробовать изменения, поскольку другая область не декомпилировалась. –

Смежные вопросы