2015-01-05 16 views
5

Viene visualizzato l'errore nell'interno foreach durante l'utilizzo di Select in datatable.Min (5) deve essere minore o uguale a max (-1) in un oggetto Range?

Ecco il codice che ho provato finora

foreach (DataRow drOuter in dtLogic.Select("Name='>' OR Name='='")) 
{ 
    foreach (DataRow drInner in dtLogic.Select("ParentId=" + Convert.ToInt64(drOuter["Id"]) + "")) 
    { 

    } 
} 

dove Convert.ToInt64(drOuter["Id"]) hanno il valore 2107362180 quando ho controllato Immediate Window.
Allora perché genera l'errore seguente?

enter image description here

risposta

11

Si dovrebbe controllare per le stringhe e non per i numeri in modo da inserire apici nella query expr='string'

foreach (DataRow drInner in dtLogic.Select("ParentId='" + Convert.ToInt64(drOuter["Id"]) + "'")) 
{ 

} 

dopo questa modifica è possibile sostituire come @Christos risposta dice

Convert.ToInt64(drOuter["Id"]) 

con

drOuter["Id"].ToString() 
+0

Sì. Avevo perso le virgolette singole all'interno di datatable.Select(). Poiché la colonna contiene solo i valori int, ancora Convert.ToInt64 (drOuter ["Id"]) funziona. Grazie mille @faby –

+0

Ok, funziona, ma puoi spiegare perché? –