OrderBy实体框架中的虚拟属性

Sam*_*nes 5 c# linq entity-framework

是否可以orderby在实体上使用虚拟属性?

我有一个类似于的类:

public int Id{get;set;}
public string Name {get;set;}

public virtual string TestName
{
   get { return string.Format("{0}{1}", Name , Id); }
}
Run Code Online (Sandbox Code Playgroud)

当我通过TestName属性订购时,我收到错误:

"LINQ to Entities不支持指定的类型成员'TestName'.仅支持初始化程序,实体成员和实体导航属性."

我最初在部分类中使用了该方法,该属性用于返回数据但不用于排序.

有没有解决的办法?

Mar*_*k E 2

您不仅.OrderBy(x => x.TestName)必须.ToList().OrderBy(x => x.TestName)在 EF 查询上使用。

这是因为该TestName属性不作为数据库表中的列存在,并且查询无法转换为 SQL 语句。该.ToList()调用会将查询具体化为 C# 集合,然后可以对其进行排序。