2016-08-04 5 views
1

Ich habe folgenden Code, um Tabellendaten in einem Objekt zu erhalten, aber ich bekomme Fehler und ich weiß nicht, wo ich falsch liege.Index war außerhalb des Bereichs. Muss nicht negativ sein und weniger als die Größe der Sammlung

public List<ModelGetEmployeeList> GetEmployeeList() 
      { 

       List<ModelGetEmployeeList> empList = new List<ModelGetEmployeeList>(); 
       DataTable dt = new DataTable(); 

       string q = "select uid,fname,lname from nworksuser;"; 
       MySqlCommand cmd = new MySqlCommand(q,conn); 
       MySqlDataAdapter adapter = new MySqlDataAdapter(cmd); ; 
       conn.Open(); 
       adapter.Fill(dt); 
       conn.Close(); 
       for (int i = 0; i < dt.Rows.Count; i++) 
       { 
        foreach (DataRow row in dt.Rows) 
        { 
         //Here I am getting following error 
         // Index was out of range. Must be non-negative and less than the size of the collection. 
         empList[i].uid = row["uid"].ToString(); 
         empList[i].fname = row["fname"].ToString(); 
         empList[i].lname = row["lname"].ToString(); 
        } 
       } 
       return empList; 
      } 

Und ModelGetEmployeeList Klasse ist wie this-

public class ModelGetEmployeeList 
    {  
     public string uid { get; set; } 
     public string fname { get; set; } 
     public string lname { get; set; } 
    } 

Antwort

0

Weil Ihr empList leer.

Der richtige Weg, um ein ModelGetEmployeeList zu Ihrer Liste hinzuzufügen, ist von:

ModelGetEmployeeList employee; 

foreach (DataRow row in dt.Rows) 
{ 
    employee = new ModelGetEmployeeList(); 
    employee.uid = row["uid"].ToString(); 
    employee.fname = row["fname"].ToString(); 
    employee.lname = row["lname"].ToString(); 

    empList.Add(employee); 
} 
+1

Hallo @Kael, dank es zu korrigieren. Gut gearbeitet. – Dipak

+0

Kein Problem @DipakAkhade – KaeL

+0

Und keine Notwendigkeit zum Öffnen und Schließen der Verbindung als Datenadapter kümmert sich darum –

Verwandte Themen