I see many developers convert one list to another list using foreach. It is ok and get the job done but there is better way to convert one list to another list using ConvertAll();
Just to explain you scenario better, let us assume you got two classes as below. InternalStudent class is representing Student class internally in the project and this is not supposed to be exposed in Service etc.
public class InternalStudent { public string IName { get; set; } public int IAge { get; set; } }
Another class is Student
public class Student { public string Name { get; set; } public int Age { get; set; } }
Now you have List of InternalStudents as below,
List<InternalStudent> lstInterStudent = new List<InternalStudent> { new InternalStudent {IName="dj",IAge=32}, new InternalStudent{IName="pinal",IAge=36} };
Requirement is to convert List<InternalStudent> to List<Student>. Usually we convert one list to another list using foreach as given below,
List<Student> lstStudent = new List<Student>(); foreach(InternalStudent s in lstInterStudent) { lstStudent.Add(new Student { Name = s.IName, Age = s.IAge }); }
There is no problem as such in this way of conversion from one generic list to another generic list. However there is better way to do this conversion.
List<Student> lstStudent = lstInterStudent.ConvertAll(x => new Student { Age = x.IAge, Name = x.IName });
We are using ConvertAll to convert one generic list to another generic list. I hope you find this post useful. Thanks for reading.
Leave a Reply