2016-05-12 24 views
8

Dostaję błąd wskazujący na in w pętli foreach !? Nigdy wcześniej się nie zdarzało. Co mogłoby być tego przyczyną? Czy coś przeoczyłem?Błąd pętli Foreach

Komunikat o błędzie:

Wyjątek typu 'System.NotSupportedException' wystąpił w EntityFramework.SqlServer.dll ale nie było obsługiwane w kodzie użytkownika


Dodatkowe informacje : Nie można utworzyć stałej wartości typu "System.Object". W tym kontekście obsługiwane są tylko typy pierwotne lub typy wyliczeniowe.

Mój kod:

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 nie jest numerem typu –

+1

@LinhTuan Nie, to INT? –

+0

ten problem nie jest zgodny z linq do sql. możesz przeczytać na: http://stackoverflow.com/questions/35511621/nhibernate-linq-doesnt-support-object-equals –

Odpowiedz

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); 
} 

Ponieważ ProjectID to int?, należy sprawdzić pod kątem nieważności, a następnie rzucić.

+0

Nie ma problemu, cieszę się, że zadziałało! –

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

powinno być:

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

Jeśli ProjectID jest int?,

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

Dziękuję za odpowiedź, ale wciąż mam ten sam problem, pomimo zmiany kodu! Coś jeszcze, co mogłoby być nie tak? –

+0

Czy komunikat o błędzie (szczególnie "informacje dodatkowe") jest taki sam po zmianie na "=="? – CherryDT

+0

Przepraszamy za opóźnienie! Tak, to jest to samo. –

Powiązane problemy