Рейтинг:
19
OriginalGriff
Мы не можем сказать, потому что у нас нет доступа к вашим данным, и именно это контролирует задание с обеих сторон. if
заявление.
Я бы начал с того, что использовал отладчик, чтобы посмотреть на содержимое dataservice
и выяснить, что именно это такое и какие типы в нем содержатся.
Затем проверьте, с какой стороны, если if...else
выполняется, и либо посмотрите очень внимательно на содержимое данных, либо на тип данных dataservice
.
Если это тот самый else
сторона, тогда я бы предположил, что все равно dataservice
содержит либо то, либо другое null
или не является экземпляром а IOrderedEnumerable<T>
(какой бы класс ни был T
случается, что это происходит во время выполнения).
Если это тот самый if
сторона, то содержание коллекции является определяющими данными.
Извините, но мы не можем сделать ничего из этого для вас - у нас нет никакого доступа к вашему коду, пока он работает!
Herman<T>.Instance
Грифф, я знаю, что сегодня утро понедельника.
Я сделал отладку, и я знаю, что это если, а не другая часть, которую он запускает.....
OriginalGriff
Итак, что же показывал отладчик в этих данных?
Herman<T>.Instance
НУЛЕВОЙ
но колонна существует.
Я добавил .И getValue(датасервис), а затем я получаю сообщение об ошибке:
параметр "this" не является экземпляром типа
данные var имеют ошибку: объект не соответствует целевому типу.
OriginalGriff
Да, но что это за тип? И какую строку содержит DropDownListDataTextField?
Если GetType возвращает тип, у которого нет свойства, соответствующего искомому имени, то сортировка будет просто сравнивать нулевые значения.
Herman<T>.Instance
<t> - это объект webAPI ModelStatu (это таблица через EF в контроллере webAPI).
DropDownListDataTextField содержит имя для отображения в раскрывающемся списке и имеет значение "Status"
OriginalGriff
Хммм. Так что же такое GetType returning?
Herman<T>.Instance
{System.Linq.OrderedEnumerable<marinmodelservice.models.modelstatu, system.type="">}
служба данных.OrderBy(x => x.GetType().GetProperty(DropDownListDataTextField)) приводит к неупорядоченному IeNumerable<t>
lmoelleb
Подсказка о том, как отлаживать: поместите точку останова внутри лямбды (поэтому вызов x.GetType()...)
Как только он попадет, попробуйте запустить x.GetType().GetProperty(...) в промежуточном окне Visual studio. Наблюдайте за данными, которые он возвращает. Это будет не то, что вы ожидаете....
Herman<T>.Instance
Я так и сделал, но вопрос решен. Спасибо
OriginalGriff
И System.Linq.OrderedEnumerable не имеет свойства Status ...
Так что же вы ожидали, что dataservice будет повторять?
И... вы собирались писать
x.GetType().GetProperty(DropDownListDataTextField).GetValue(x)
Herman<T>.Instance
Спасибо, Приятель!
Я же сказал, что сегодня утро понедельника.....
OriginalGriff
Он взял меня достаточно долго, чтобы заметить, что сам! :смеяться: