2016-05-12 11 views
8

Ich bekomme einen Fehler, der auf in in der foreach-Schleife zeigt !? Es ist noch nie zuvor passiert. Was könnte der Grund dafür sein? Habe ich etwas verpasst?Foreach-Schleife Fehler

Fehlermeldung:

Eine Ausnahme vom Typ 'System.NotSupportedException' in EntityFramework.SqlServer.dll aufgetreten, wurde aber in Benutzercode


Zusätzliche Informationen nicht behandelt : Es konnte kein konstanter Wert vom Typ 'System.Object' erstellt werden. In diesem Kontext werden nur primitive Typen oder Aufzählungstypen unterstützt.

Mein Code:

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 ist keine Typennummer –

+1

@LinhTuan Nein, es ist ein INT? –

+0

Dieses Problem entspricht nicht in Linq zu SQL unterstützt. Sie können lesen unter: http://stackoverflow.com/questions/35511621/nhibernate-linq-doesnt-support-object-equals –

Antwort

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

Da die ProjectID eine int? ist, müssen Sie auf Nichtigkeit prüfen und dann umwandeln.

+0

Kein Problem, froh, dass es funktioniert hat! –

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

sollte sein:

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

Wenn ProjectIDint? ist,

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

Vielen Dank für Ihre Antwort, aber ich habe immer noch das gleiche Problem, trotz der Änderung im Code! Etwas anderes könnte falsch sein? –

+0

Ist die Fehlermeldung (insbesondere die "Zusatzinformation") nach dem Wechsel zu '==' immer noch gleich? – CherryDT

+0

Entschuldigung für die Verzögerung! Ja, es ist dasselbe. –