Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# List or Collection initializer using foreach loop

Is it possible in C# to do something similar to the following?

var tigerlist = new List<Tigers>(){ Tail = 10, Teeth = 20 };

var tigers_to_cats_approximation = new List<Cat>()
{    
     foreach (var tiger in tigerlist)
     {                 
           new Cat()
           {
               Tail = tiger.Tail / 2,
               Teeth = tiger.Teeth / 3,
               HousePet = true,
               Owner = new Owner(){ name="Tim" }
           }
     }
}

I'm doing some XML apis and the request objects coming in are similar to the response objects that need to go out. The above would be incredibly convenient if it were possible; much more so than auto-mapper.

like image 259
Watson Avatar asked Jul 31 '18 18:07

Watson


1 Answers

You can use the Select clause along with ToList():

var tigers_to_cats_approximation =
    tigerlist
        .Select(tiger => new Cat()
        {
            Tail = tiger.Tail / 2,
            Teeth = tiger.Teeth / 3,
            HousePet = true,
            Owner = new Owner() { name = "Tim" }
        })
        .ToList();
like image 69
Ousmane D. Avatar answered Oct 05 '22 02:10

Ousmane D.