Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何编写这个LINQ/EF查询?_Vb.net_Entity Framework_Linq To Entities_Razor 2 - Fatal编程技术网

Vb.net 如何编写这个LINQ/EF查询?

Vb.net 如何编写这个LINQ/EF查询?,vb.net,entity-framework,linq-to-entities,razor-2,Vb.net,Entity Framework,Linq To Entities,Razor 2,因此,我有一个实体框架5模型,其中包括多对多关系 类别价值--课程 我有一个LINQ查询,它选择数据库中的每一门课程。我真的想修改它,只选择属于特定类别值的课程。到目前为止,我的尝试失败了 有人能帮我弄清楚吗 这就是我尝试过的: Using database As SiteDataContext = New SiteDataContext database.Configuration.ProxyCreationEnabled = False database.Courses.In

因此,我有一个实体框架5模型,其中包括多对多关系

类别价值--课程

我有一个LINQ查询,它选择数据库中的每一门课程。我真的想修改它,只选择属于特定类别值的课程。到目前为止,我的尝试失败了

有人能帮我弄清楚吗

这就是我尝试过的:

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

我认为您只是缺少了对查询变量的筛选器赋值。Where返回一个新的查询表,它不会修改应用Where的查询表。因此,您需要:

query = query.Where(...)

Where表达式本身在我看来是正确的。

我认为您只是缺少了对查询变量的筛选器赋值。Where返回一个新的查询表,它不会修改应用Where的查询表。因此,您需要:

query = query.Where(...)
Where表达式本身在我看来是正确的