2013-04-08 1 views
1

그래서 다 대 다 관계가 포함 된 Entity Framework 5 모델이 있습니다. 이 LINQ/EF 쿼리를 작성하는 방법?

CategoryValues --<CourseCategoryValues>-- Courses

나는 데이터베이스의 모든 Course을 선택하는 LINQ 쿼리가 있습니다. 정확히 CategoryValue에 속하는 Courses 만 선택하도록 수정하고 싶습니다. 내 시도는 지금까지 실패 했나요?

아무도 나를 알아낼 수 있습니까?

이 내가 시도 것입니다 :

Using database As SiteDataContext = New SiteDataContext 
    database.Configuration.ProxyCreationEnabled = False 
    database.Courses.Include("Classes") 
    database.Courses.Include("CourseCategoryValues") 
    query = (From c In database.Courses Select c Order By c.Name).Where(
                     Function(c) 0 < c.Classes.Where(Function([class]) [class].Status.ToLower = "open").Count 
                  ).Include(Function(r) r.Classes).Include(Function(r) r.CourseCategoryValues) 
    ' Here is where I am trying to narrow down the query results 
    If (pid.HasValue) AndAlso (0 <> pid.Value) Then 
     query.Where(Function(c) c.CourseCategoryValues.Any(Function(v) v.CategoryValue.CategoryValueID = pid)) 
    End If 

    model.PageData = query.ToList 
End Using 

답변

1

당신은 쿼리 변수에 필터의 할당을 누락 생각합니다. Where은 새 쿼리 가능을 반환하고 Where을 적용한 쿼리 가능 쿼리는 수정하지 않습니다. 그래서, 당신은해야합니다 :

query = query.Where(...) 

Where 표현 자체가 나에게 올바른 보인다.