![](/img/trans.png)
[英]The specified type member 'UserName' is not supported in LINQ to Entities
[英]EF 4: The specified type member '*' is not supported in LINQ to Entities
我有这样的映射类:
[Table("MyTable")]
class MyClass
{
//properties; id, name, etc...
private string _queuedToWHTime = string.Empty;
[Column("QueuedToWHTime")]
public string QueuedToWHTime
{
get { return _queuedToWHTime; }
set { _queuedToWHTime = value; }
}
public DateTime? QueuedToWHTime_DateTime
{
get
{
if (!string.IsNullOrWhiteSpace(_queuedToWHTime))
{
return Convert.ToDateTime(_queuedToWHTime);
}
return null;
}
}
}
和一个表(MyTable):
CREATE TABLE webnews_in
(
Id INT NOT NULL auto_increment,
QueuedToWHTime VARCHAR (50) NULL
...
PRIMARY KEY (Id)
);
当我试图像这样查询:
var searchRslt=(from m in queryableNews
orderby m.QueuedToWHTime_DateTime descending
select m).ToList();
我得到了一个NotSupportedException
: LINQ to Entities中不支持指定的类型成员'QueuedToWHTime_DateTime'。 仅支持初始值设定项,实体成员和实体导航属性。
您无法在自定义属性上使用EF查询。 无法在SQL中转换自定义属性。
你可以这样做来强制orderby在'内存中'完成。
var searchRslt = queryableNews
.AsEnumerable()
.OrderBy(m => m.QueuedToWHTime_DateTime)
.ToList();
问题在于:
var searchRslt=(from m in queryableNews
orderby m.QueuedToWHTime_DateTime descending
select m).ToList();
您正在尝试使用属性.QueuedToWHTime_DateTime
,但数据库中不存在该属性。 您需要使用数据库中使用的名称。 在这种情况下.QueuedToWHTime
所以:
var searchRslt=(from m in queryableNews
orderby m.QueuedToWHTime descending
select m).ToList();
如果数据库属性在这种情况下不可用,则必须拉出整个列表,将其转换为IEnumerable(任何可以做),然后按其属性过滤/排序IEnumerable。
像这样的东西:
var result = queryableNews.ToList().OrderbyDescending(x=>x.QueuedToWHTime_DateTime).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.