Search code examples
c#ilist

IList.Add() overwriting existing data


I'm facing a problem adding data to an IList but the problem is each time I added data the existing data is overwritten with the current one my code is given below:

Test test = new Test();
IList<Test> myList = new List<Test>();

foreach (DataRow dataRow in dataTable.Rows)
{
     test.PatientID = Convert.ToInt64(dataRow.ItemArray[0]);
     test.LastName = dataRow.ItemArray[1].ToString();
     test.FirstName = dataRow.ItemArray[2].ToString();
     myList.Add(test);
}

What's the reason behind this?


Solution

  • move test object creation inside the loop

    IList<Test> myList = new List<Test>();
    
    foreach (DataRow dataRow in dataTable.Rows)
    {   Test test =new Test();
        test.PatientID = Convert.ToInt64(dataRow.ItemArray[0]);
        test.LastName = dataRow.ItemArray[1].ToString();
        test.FirstName = dataRow.ItemArray[2].ToString();
        myList.Add(test);
     }
    

    what you currently doing is updating same instant of test inside the loop and add the same again and again..