[英]OrderBy virtual property in 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); }
}
当我通过TestName属性订购时,我收到错误:
“LINQ to Entities不支持指定的类型成员'TestName'。仅支持初始化程序,实体成员和实体导航属性。”
我最初在部分类中使用了该方法,该属性用于返回数据但不用于排序。
有没有解决的办法?
而不仅仅是.OrderBy(x => x.TestName)
您必须在EF查询中使用.ToList().OrderBy(x => x.TestName)
。
这是因为TestName
属性不作为数据库表中的列存在,并且查询无法转换为SQL语句。 .ToList()
调用将查询实现为C#集合,然后可以对其进行排序。
您可以使用DelegateDecompiler将属性内的代码扩展到表达式树,这意味着Linq to Entities可以从中生成SQL。
https://github.com/hazzik/DelegateDecompiler
您只需要使用[Computed]
属性.Decompile()
属性,并调用.Decompile()
作为linq查询的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.