2016-05-12 157 views
8

我开始在foreach循环中指向in的错误!?以前从未发生过。这可能是什么原因?我错过了什么吗?Foreach循环错误

错误消息:

类型的异常的 'System.NotSupportedException' 发生EntityFramework.SqlServer.dll但在用户代码中没有处理


附加信息:无法创建类型为'System.Object'的常量 值。在此上下文中仅支持基本类型 或枚举类型。

我的代码:

List<int> WeeksInProject = new List<int>(); 
var w = from x in db.Activities 
     where x.ProjectID.Equals(1) 
     select x; 

foreach (var wNum in w) 
{ 
    WeeksInProject.Add(wNum.WeekNumber); 
} 
+0

wNum.WeekNumber是不是类型号码 –

+1

@LinhTuan不,这是一个INT? –

+0

这个问题等于不支持linq到sql。你可以阅读:http://stackoverflow.com/questions/35511621/nhibernate-linq-doesnt-support-object-equals –

回答

2
List<int> WeeksInProject = new List<int>(); 
var w = from x in db.Activities 
     where x.ProjectID != null && (int)x.ProjectID == 1 
     select x; 

foreach (var wNum in w) 
{ 
    WeeksInProject.Add(wNum.WeekNumber); 
} 

由于ProjectID是int?,您必须检查无效然后进行转换。

+0

没问题,很高兴它的工作! –

6
var w = from x in db.Activities 
     where x.ProjectID.Equals(1) select x; 

应该是:

var w = from x in db.Activities 
     where x.ProjectID == 1 select x; 

如果ProjectIDint?

var w = from x in db.Activities where 
     x.ProjectID.HasValue && 
     x.ProjectID.Value == 1 select x; 
+0

感谢您的回答,但我仍然遇到同样的问题,尽管代码发生了变化!其他可能会出错的东西? –

+0

更改为“==”后,错误消息(尤其是“附加信息”)是否仍然相同? – CherryDT

+0

对不起,延迟!是的,这是一样的。 –