There are various object mappers available like AutoMapper, TinyMapper, EmitMapper, ValueInjector and many more mappers. They all provide a flexible way to do the mappings from one object to another without much effort. When it comes to performance nothing can beat good old manual mappings. The downside is, it get mixed up under projection from LINQ queries. By mixing projection, we hard code the mapping between model, if again it needs to be mapped to some other place, then write that again. The ideal approach should be separating the mapping to some other place, it also takes care of SRP pattern and also our code manageability increase by keeping projection/mapping separately. The usage can be very simple. Here is expression technique to map one entity model to view model. public Expression<Func<SecurityUser, UserBasicInfo>> MapUserBasicInfo() { return (user) => new UserBasicInfo { FullName = user.Person.FirstName + " "