AutoMapper

The AutoMapper is an open-source library present in GitHub.

AutoMapper is a productivity tool designed to help you write less repetitive code mapping code. AutoMapper maps objects to objects, using both convention and configuration.  AutoMapper is flexible enough that it can be overridden so that it will work with even the oldest legacy systems.
AutoMapper is a popular object-to-object mapping library that can be used to map objects belonging to dissimilar types.
As an example, you might need to map the DTOs (Data Transfer Objects) in your application to the model objects.
To start working with AutoMapper, you should create a project in Visual Studio and then install AutoMapper.
Install AutoMapper from NuGet.
Automapper is a simple reusable component which helps to copy data from object type to other.

1) Projection-working:-
var config = new MapperConfiguration(cfg => {
cfg.CreateMap();
});
IMapper iMapper = config.CreateMapper();
var source = new AuthorModel();
source.Id = 1;
source.FirstName = "Sibin";
source.LastName = "Thomas";
source.Address = "Kodiyan(H)";
var sourcedto = new AuthorDTO();
sourcedto.City = "Thrissur";
sourcedto.State = "Kerala";
sourcedto.Country = "India";
var destination = iMapper.Map(source, sourcedto);
Console.WriteLine("FirstName: " + destination.FirstName + "City: " + destination.City);

2) Flattening-working:-
var customer = new Customer
{
Name = "George Costanza"
};
var order = new Order
{
Customer = customer
};
var bosco = new Product
{
Name = "Bosco",
Price = 4.99m
};
order.AddOrderLineItem(bosco, 15);
var configuration = new MapperConfiguration(cfg => cfg.CreateMap());
IMapper mapper = configuration.CreateMapper();
OrderDto dto = mapper.Map(order);
dto.CustomerName.Equals("George Costanza");dto.Total.Equals(74.85m);