我正在使用MVC和实体框架。我在我的模型文件夹中创建了一个类,下面是这个代码。我不断收到上面的错误消息以及下面的两个查询。我知道引用非标量变量存在一个已知问题,但我不确定如何实现变通方法:
http://msdn.microsoft.com/en-us/library/bb896317.aspx#Y1442
private MovieLibraryDBEntities movieLibraryDBEntitiesContext;
public int getNumberOfEntriesReserved()
{
return (from m in movieLibraryDBEntitiesContext.Movies
where m.CheckedOut.Equals(1)
select m).Count();
//return movieLibraryDBEntitiesContext.Movies
// .Where(e => e.CheckedOut.Equals(1))
// .Select (e => e.Title).Count();
}
答案 0 :(得分:14)
您不能在linq-to-entities查询中使用m.CheckedOut.Equals(1)
。使用m.CheckedOut == 1
但CheckedOut
必须为integer
。
答案 1 :(得分:3)
这是一个较老的问题。尝试使用IQueryable接口过滤可空列时,我遇到了同样的问题。我通过首先检查对象是否有值然后检查值来解决问题。
widgets = widgets.Where(x => x.ID.HasValue.Equals(true) && x.ID.Value.Equals(widgetID));
答案 2 :(得分:1)
使用Any()
的相同问题
我必须改变我的where子句来搜索原始类型,对于我来说
所以这个
where order.User == user
变成这个
where order.User.UserId == user.UserId
有blog post解释这个怪癖。