Convert List to List using ConvertAll in C#

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.

4 responses to “Convert List to List using ConvertAll in C#”

  1. […] Convert List to List using ConvertAll in C# (Dhananjay Kumar) […]

  2. Sir,
    I don’t know about the ConvertAll and thanks for the information.

    But, there’s one more problem I face. Now, if I want to Convert List to List with a long list of members(for ex, around 100). We can do this also using your ConvertAll but It’s obvious that mapping 100 members is not a efficient code.

    So, what do you suggest for this.

    Thanks in advance,

    Your follower,
    @shivamchopra

  3. Sir,
    I don’t know about the ConvertAll and thanks for the information.

    But, there’s one more problem I face. Now, if I want to Convert List to List with a long list of members(for ex, around 100). We can do this also using your ConvertAll but It’s obvious that mapping 100 members is not a efficient code.

    So, what do you suggest for this.

    Thanks in advance,

    Your follower,
    @shivamchopra

  4. One question I have heard that Compiled Linq is fast than regular Linq, will it be helpful in this case ?

Leave a comment

Create a website or blog at WordPress.com