【发布时间】:2017-07-28 23:28:13
【问题描述】:
是否可以orderby 实体上的虚拟属性?
我有一个类似于:
public int Id{get;set;}
public string Name {get;set;}
public virtual string TestName
{
get { return string.Format("{0}{1}", Name , Id); }
}
当我通过 TestName 属性订购时,我得到了错误:
"指定类型成员 'TestName' 在 LINQ to 中不受支持 实体。只有初始化器、实体成员和实体导航 支持属性。”
我最初在一个部分类中拥有该方法,该属性用于返回数据但不用于排序。
有没有办法解决这个问题?
【问题讨论】:
-
我怀疑你必须指定只读或非映射。
-
该错误与
virtual的属性无关。您收到错误是因为您调用OrderBy的集合是IQueryable<T>,因此 EF 尝试从中创建 SQL。由于数据库不知道该属性,因此无法对其进行排序。
标签: c# entity-framework linq