2013-04-08 3 views
1

Итак, у меня есть модель Entity Framework 5, которая включает отношения «многие ко многим».Как написать этот запрос LINQ/EF?

CategoryValues --<CourseCategoryValues>-- Courses

У меня есть запрос LINQ, который выбирает каждый Course в базе данных. Я бы очень хотел его изменить, чтобы выбрать только Courses, которые относятся к определенному CategoryValue. Моя попытка до сих пор не удалась?

Может ли кто-нибудь помочь мне понять это?

Это то, что я пробовал:

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 выражение само по себе выглядит правильно для меня.

Смежные вопросы