EF 包含 where 子句

Si *_*Thu 5 c# linq entity-framework

我有资源和资源详细信息。MemberPoint 带有memberId 和ResourceId。

我想获取会员的资源详细信息。

在 SQL 中,

Select d.* From ResourceDetails d Inner Join 
        Resource on r d.ResourceId = r.Id Inner Join 
        MemberPoint mp on r.id = mp.ResourceId 
        where mp.memberId = 1
Run Code Online (Sandbox Code Playgroud)

在英孚,

   var query = _context.ResourceDetails
            .Include(d => d.Resource)
            .Include(r => r.Resource.Memberpoints)
            .Where(e => e.Resource.Memberpoints.Where(m => m.MemberId))
Run Code Online (Sandbox Code Playgroud)

当我写上面的 EF 查询时出现错误。

错误:System.Linq.IQueryable 的未知方法“Where(?)”

小智 2

您可以尝试使用这种方式包含:

var query = _context.MemberPoint.Include("Resource.ResourceDetails")
                                .Where(m => m.MemberId == 111111);
Run Code Online (Sandbox Code Playgroud)

或者尝试加入 resourceId 并选择包含您需要的数据的匿名类型:

var query = (from m in _context.MemberPoint
            join rd in _context.ResourceDetails on m.ResourceId equals rd.ResourceId
            where m.MemberId == 11111
            select new
            {
               Member = m,
               ResourceDetail = rd
            })
Run Code Online (Sandbox Code Playgroud)