/// <summary> /// Projects each product of a sequence into a new form. /// </summary> public static IQueryable <PageItem> Select(this IQueryable <PortalPage> query, PageField fields) { Expression <Func <PortalPage, PageItem> > selector = page => new PageItem { Id = page.Id, Uri = page.Uri, ModifiedDate = page.ModifiedDate, Name = page.Name, Description = page.Description }; if (fields.HasFlag(PageField.Portal)) { selector = selector.Merge(page => new PageItem { Portal = new ResourceItem { Id = page.Portal.Id, Uri = page.Portal.Uri, Name = page.Portal.Name } }); } if (fields.HasFlag(PageField.Master)) { selector = selector.Merge(page => new PageItem { Master = page.Master == null ? null : new ResourceItem { Id = page.Master.Id, Uri = PortalFunctions.GetPageUriById(page.Master.Id), Name = page.Master.Name } }); } if (fields.HasFlag(PageField.Content)) { selector = selector.Merge(page => new PageItem { HtmlContent = page.HtmlContent, StyleContent = page.StyleContent }); } return(query.Select(selector)); }