LINQ to Entities: pattern for null parent



我正在查询实体框架模型,所以在这种情况下,我使用LINQ到实体。它只是意味着我不能使用所有最新的操作符。

下面是LINQ select语句:

            var nodes = r.Find(pn =>
                pn.StatusId == PageStatus.Active &&
                pn.IncludeInSitemap &&
                sitemap.Contains(pn.PageTemplate.SiteSectionId))
                .Select(x => new
                {
                    x.PageTemplate.RouteName,
                    x.RouteValues,
                    x.PageTemplate.PhysicalFile,
                    MetaLastModified = x.PageMeta.LastModified,
                    ContentBlock = x.PageContent != null
                        ? x.PageContent.ContentBlock
                        : default,
                    ContentLastModified = x.PageContent != null
                        ? x.PageContent.LastModified
                        : default,
                    x.PageType.Priority
                })
                .OrderByDescending(x => x.Priority)
                .ThenBy(x => x.RouteName)
                .ToList();

如您所见,我有两个属性需要检查PageContent是否为空。我不能使用"?操作符,因为它是对实体的LINQ。然而,我想知道是否有可能对父节点进行一次NULL检查(而不是两次),并相应地设置两个属性。

LINQ对我来说有点陌生,所以它可能是一个非常简单的答案,也可能是不可能的。

欢迎指教。

是这样的?

                .Select(x => new
                {
                    x.PageTemplate.RouteName,
                    x.RouteValues,
                    x.PageTemplate.PhysicalFile,
                    MetaLastModified = x.PageMeta.LastModified,
                    PageContent = x.PageContent
                    x.PageType.Priority
                })
             .Select(anonymousClass => 
                         anonymousClass.PageContent is PageContentType pg ? 
                                  new { ... } : 
                                  new {})    

如果我们用一个真实的类替换匿名类…然后构造函数可以进行一次性测试,以确保推导出的属性被正确设置…

最新更新