Simplify my class mapping common class properties between model and viewmodel classes I have an ASP.NET MVC 5 app and I map properties between model and viewmodel and vice versa. 

I could use automapper to do this but since I don't need mapping rules to convince me to use it as I mostly do simple 1 to 1 mapping the  performance overhead that automapper will add is not worthwhile.If I have mapping differences I'll map it manually where I reference it in my controller.

Here is my code

public class Dog
{
    public int Id { get; set; }

    public string Name { get; set; }

    public DateTime? BirthDate { get; set; }

    public int? CreatedBy{ get; set; }

    public DateTime? DateCreated { get; set; }
}

public class DogViewModel
{
    public int Id { get; set; }

    public string Name { get; set; }

    public DateTime? BirthDate { get; set; }


    public static implicit operator DogViewModel(Dog dm)
    {
        var vm= new DogViewModel{
            Id = dm.Id,
            Name = dm.Name,
            BirthDate = dm.BirthDate 
       };
        return vm;
    }

    public static implicit operator Dog(DogViewModel vm)
    {
        var dm = new Dog
        {
            Id = vm.Id,
            Name = vm.Name,
            BirthDate = vm.BirthDate 
        };
        return dm;
    }
}


This allows me to in my controller actionmethods easily map one class to another. 

e.g.

  public async Task&lt;IActionResult&gt; Edit(int? id)
    {
        var dog= await _db.Dogs.FirstOrDefaultAsync(d =&gt; md.Id == id);
        DogViewModel dogVm = dog;
        ...

     }

    [HttpPost]
    public async Task&lt;IActionResult&gt; Edit(DogViewModel dogVm)
    {
       Dog dog= dogVm;
       ...
    }


In my index ActionMethod I need to map a list of items.

  public async  Task&lt;IActionResult&gt; Index()
    {
        var dogs = await _db.Dogs.ToListAsync();

        var dogVms = new List&lt;DogViewModel&gt;();
        foreach (var dog in dogs)
        {
            DogViewModel dogVm = dog;
            dogVms.Add(dogVm);
        }
        return View(dogVms);
    }


Question: Is there a way in LINQ or some other way in C# to eliminate the above foreach clause to simplify this code?
Providing 

var dogVms = new List&lt;MonthViewModel&gt;();


is meant to actually be 

var dogVms = new List&lt;DogViewModel&gt;();


Then to use LINQ you could do

List&lt;DogViewModel&gt; dogVms = (from dog in dogs select (DogViewModel)dog).ToList();