public void FillReferences(IEnumerable <PageListDTO> listT) { var ids = listT.Select(d => d.Id).ToList(); var q = from p in DbContext.PageRoutes where ids.Contains(p.Page.Id) select new { p.Id, Edit = p.EditUrl != null ? 1 : 0, Add = p.AddUrl != null ? 1 : 0, Details = p.DetailsUrl != null ? 1 : 0, List = p.ListUrl != null ? 1 : 0 }; var qq = from p in DbContext.PageParameters where ids.Contains(p.Page.Id) && p.LinkedPageId != null group p by p.PageId into PS select new { PS.Key, Count = PS.Count() }; var routs = q.ToList(); var par = qq.ToList(); foreach (var page in listT) { var pr = routs.Where(d => d.Id == page.Id).FirstOrDefault(); var pp = par.Where(d => d.Key == page.Id).FirstOrDefault(); if (pr != null) { page.References = pr.Edit + pr.Add + pr.Details + pr.List; } if (pp != null) { page.References += pp.Count; } } }