1

所以我有一个包含多对多关系的 Entity Framework 5 模型。

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
4

1 回答 1

1

我认为您只是缺少将过滤器分配给查询变量。Where返回一个新的可查询对象,它不会修改您应用的可查询对象Where。所以,你需要:

query = query.Where(...)

Where表达式本身对我来说看起来是正确的。

于 2013-04-08T21:39:24.483 回答