Я пытаюсь создать SelectList
, оборачивая целую кучу объектов модели в отдельные объекты модели представления.
У меня есть вид модели класса:
public class ReferenceDocumentSelectionViewModel
{
public ReferenceDocument Document { get; set; }
public int ID { get { return Document.ID; } }
public String DisplayText
{
get
{
return Document.DocumentNumber +
Document.Version +
Document.Revision +
Document.Sheet;
}
}
}
Затем я пытаюсь использовать лямбда-выражения для создания списка этих объектов:
var docs = _db.ReferenceDocuments
.Select(r => new ReferenceDocumentSelectionViewModel()
{
Document = r
});
перед присвоением их SelectList
:
ReferenceDocList = new SelectList(docs.OrderBy(r => r.DisplayText),
"ID",
"DisplayText");
На мой взгляд, я получаю доступ к списку выбора следующим образом:
@Html.DropDownListFor(model => model.SelectedReferenceDoc,
Model.ReferenceDocList,
"-Select-",
new { id = "ReferenceList" })
, где model.SelectedReferenceDoc
- целочисленное свойство в другой модели представления.
Я думал, что это будет работать, но вместо этого я получаю следующую ошибку:
Указанный элемент типа 'DisplayText' не поддерживается в LINQ для
Сущности. Только инициализаторы, элементы сущностей и навигация сущностей
свойства поддерживаются.
Помощь
РЕДАКТИРОВАТЬ: При дальнейшем расследовании кажется, что это docs.OrderBy(r => r.DisplayText)
, что вызывает проблему. Если я удаляю это, это работает отлично. Есть идеи, почему это не разрешено?