2016-05-12 13 views
8

Sto ricevendo un errore che punta a in nel ciclo foreach !? Non è mai successo prima. Quale potrebbe essere la ragione di questo? Ho perso qualcosa?Errore ciclo Foreach

Messaggio di errore:

Un'eccezione di tipo 'System.NotSupportedException' si è verificato in EntityFramework.SqlServer.dll ma non è stata gestita nel codice utente


Ulteriori informazioni : Impossibile creare un valore costante di tipo 'System.Object'. Solo i tipi primitivi o tipi di enumerazione sono supportati in questo contesto.

Il mio codice:

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 non è il numero di tipo –

+1

@LinhTuan No, è un INT? –

+0

questo problema è uguale a non supportare in linq a sql. puoi leggere a: http://stackoverflow.com/questions/35511621/nhibernate-linq-doesnt-support-object-equals –

risposta

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

Poiché ProjectID è un int?, è necessario verificare la nullità e quindi eseguirne il cast.

+0

Nessun problema, felice ha funzionato! –

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

dovrebbe essere:

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

Se ProjectID è int?,

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

Grazie per la risposta, ma ho ancora lo stesso problema, nonostante il cambio di codice! Qualcos'altro che potrebbe essere sbagliato? –

+0

Il messaggio di errore (in particolare le "informazioni aggiuntive") rimane lo stesso dopo aver cambiato in '=='? – CherryDT

+0

Ci scusiamo per il ritardo! Sì, è lo stesso. –