2016-05-12 154 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

對不起,延遲!是的,這是一樣的。 –