Entity framework 我可以在EF Core中混合使用LINQ和Fluent语法吗?

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

我有一个运行良好的查询(因为它生成了正确的SQL命令):

如您所见,这是一个复杂的查询,尝试使用Fluent API非常麻烦。但是,我希望“Where”子句是可编程的。根据当前用户拥有的功能,他们应该能够根据不同的条件进行搜索。一级支持人员只能根据分类字段的精确匹配进行搜索,而二级支持人员可以根据通配符进行搜索

有没有办法混合语法。我想要的是这样的东西:

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);