【发布时间】:2011-10-05 01:00:56
【问题描述】:
我正在尝试通过将一大堆模型实体包装在单个视图模型实体中来创建 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;
}
}
}
然后我尝试使用 lambda 表达式来创建这些对象的列表:
var docs = _db.ReferenceDocuments
.Select(r => new ReferenceDocumentSelectionViewModel()
{
Document = r
});
在将它们分配给SelectList之前:
ReferenceDocList = new SelectList(docs.OrderBy(r => r.DisplayText),
"ID",
"DisplayText");
在我看来,我像这样访问 SelectList:
@Html.DropDownListFor(model => model.SelectedReferenceDoc,
Model.ReferenceDocList,
"-Select-",
new { id = "ReferenceList" })
其中model.SelectedReferenceDoc 是另一个视图模型上的整数属性。
我认为这可行,但我收到以下错误:
LINQ to 中不支持指定的类型成员“DisplayText” 实体。只有初始化器、实体成员和实体导航 支持属性。
帮助?
编辑:经过进一步调查,似乎是 docs.OrderBy(r => r.DisplayText) 导致了问题。如果我删除它,它工作正常。关于为什么不允许这样做的任何想法?
【问题讨论】:
标签: c# .net linq linq-to-entities