2013-04-08 115 views
1

所以我有一個包含多對多關係的實體框架5模型。如何編寫這個LINQ/EF查詢?

CategoryValues --<CourseCategoryValues>-- Courses

我有一個LINQ查詢選擇數據庫中的每個Course。我真的想修改它只選擇屬於特定CategoryValueCourses。我迄今的嘗試失敗了?

任何人都可以幫我解決這個問題嗎?

這是我曾嘗試:

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表達式本身對我來說看起來是正確的。