Entity framework 我可以在EF Core中混合使用LINQ和Fluent语法吗?
我有一个运行良好的查询(因为它生成了正确的SQL命令): 如您所见,这是一个复杂的查询,尝试使用Fluent API非常麻烦。但是,我希望“Where”子句是可编程的。根据当前用户拥有的功能,他们应该能够根据不同的条件进行搜索。一级支持人员只能根据分类字段的精确匹配进行搜索,而二级支持人员可以根据通配符进行搜索 有没有办法混合语法。我想要的是这样的东西:Entity framework 我可以在EF Core中混合使用LINQ和Fluent语法吗?,entity-framework,linq,linq-to-sql,Entity Framework,Linq,Linq To Sql,我有一个运行良好的查询(因为它生成了正确的SQL命令): 如您所见,这是一个复杂的查询,尝试使用Fluent API非常麻烦。但是,我希望“Where”子句是可编程的。根据当前用户拥有的功能,他们应该能够根据不同的条件进行搜索。一级支持人员只能根据分类字段的精确匹配进行搜索,而二级支持人员可以根据通配符进行搜索 有没有办法混合语法。我想要的是这样的东西: var (sites = from sm in this.context.SiteMemberships join s in this
var (sites = from sm in this.context.SiteMemberships
join s in this.context.Sites on sm.SiteUid equals s.SiteUid
join sd in this.context.SiteData on s.SiteUid equals sd.SiteUid
join p in this.context.Providers on s.ProviderUid equals p.ProviderUid
join r in this.context.Regions on p.RegionUid equals r.RegionUid
join o in this.context.Offices on s.OfficeUid equals o.OfficeUid
join u in this.context.Users on sm.UserUid equals u.UserUid)
.Where(g => this.GetSearchCriteria(g))
.Select(g => g);
您需要在上次加入后添加
选择新的{s,sd,p,r,o,u}
var sites = (from sm in this.context.SiteMemberships
join s in this.context.Sites on sm.SiteUid equals s.SiteUid
join sd in this.context.SiteData on s.SiteUid equals sd.SiteUid
join p in this.context.Providers on s.ProviderUid equals p.ProviderUid
join r in this.context.Regions on p.RegionUid equals r.RegionUid
join o in this.context.Offices on s.OfficeUid equals o.OfficeUid
join u in this.context.Users on sm.UserUid equals u.UserUid
select new { s, sd, p, r, o, u })
.Where(g => this.GetSearchCriteria(g))
.Select(g => g);
只要编译器高兴,就没有什么能阻止您这样做。怎么了?编译器不高兴。它希望在LINQ语法的末尾有一个“Select”。
var sites = (from sm in this.context.SiteMemberships
join s in this.context.Sites on sm.SiteUid equals s.SiteUid
join sd in this.context.SiteData on s.SiteUid equals sd.SiteUid
join p in this.context.Providers on s.ProviderUid equals p.ProviderUid
join r in this.context.Regions on p.RegionUid equals r.RegionUid
join o in this.context.Offices on s.OfficeUid equals o.OfficeUid
join u in this.context.Users on sm.UserUid equals u.UserUid
select new { s, sd, p, r, o, u })
.Where(g => this.GetSearchCriteria(g))
.Select(g => g);