对象不可查询

时间:2012-07-17 13:34:57

标签: asp.net database vb.net linq

我有一个带有“作者”表的数据库“Pubs”。我通过拖动“authors”来从数据库中创建了一个dbml文件。

这是“Default.aspx.vb”

Public Class _Default
    Inherits System.Web.UI.Page
    Dim author As Object
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim db As New PubsContext
        Dim authors = From p In dbo.authors _
                       Select p

        GridView1.DataSource = author
        GridView1.DataBind()
    End Sub
End Class

以下是它的类:“Class1.vb”

Partial Public Class PubsContext
    Dim authors As Object
    Public Function GetProductsByCategory(ByVal id1 As Integer) As IEnumerable(Of authors)
        Return From p In Me.authors _
               Where p.au_id = id1 _
               Select p
    End Function
End Class

错误代码: “类型'对象'的表达式是不可查询的。请确保您没有错过LINQ的程序集引用和/或名称空间导入”。

在引用中已经存在“System.Data.Linq”。我该怎么办?

1 个答案:

答案 0 :(得分:3)

这就是问题所在:

Dim authors As Object

那只是一个对象。在此基础上调用SelectWhere意味着是什么意思?你甚至在哪里给它一个价值?弄清楚真正的类型应该是什么,确保你给它一个合适的价值,你应该没事。

目前尚不清楚为什么要引入自己的authors字段,说实话 - 我希望生成的上下文具有类型为Authors的{​​{1}}属性或类似的东西。

(我注意到你还试图将Table<Author>设置为GridView1.DataSource而不是author,顺便说一下......你为什么这样做?你期待什么价值? authors中的author字段有哪些?)