I managed to put together following code to correctly Populate RequestExecutionViewModel model,however this looks extremely verbose to me. I feel some sort of LINQ builtin mapping construct can be used to reduce the over all code size. Please suggest improvements.
string userName = User.Identity.Name;
List<Requests> requests = db.Requests.Where(a => a.UserName.
Equals(userName)).ToList();
List<RequestExecutionViewModel> items = new List<RequestExecutionViewModel>();
foreach (Requests request in requests)
{
RequestExecutionViewModel requestview = new RequestExecutionViewModel();
requestview.Request = request;
requestview.ExecutionStatus = db.ExecutionStatus.Where(a => a.RequestId.Equals(request.RequestsId)).ToList();
requestview.Approvals = db.Approvals.Where(a => a.RulesId.Equals(request.RulesId)).ToList();
items.Add(requestview);
}
Edit: With the help of jessehouwing answer I restructured my models and removed the need for RequestExecutionViewModel entirely. Now my query is simplified to this.
var requests = db.Requests.Include(r => r.Rule);