Vb.net 具有匿名类型的Linq查询问题

Vb.net 具有匿名类型的Linq查询问题,vb.net,linq-to-sql,Vb.net,Linq To Sql,我想不出有什么问题 If IsNothing(_cartItem) Then Dim SPDB As New SamplePicturesDataContext() Dim q = From sp In SPDB.Pictures _ Where sp.Id = ItemId _ Select New With {.Pic_Desc = sp.Description, _

我想不出有什么问题

If IsNothing(_cartItem) Then

    Dim SPDB As New SamplePicturesDataContext()
    Dim q = From sp In SPDB.Pictures _
            Where sp.Id = ItemId _
            Select New With {.Pic_Desc = sp.Description, _
                             .Pic_Title = sp.PictureName}
    _cartItem = New CartItem(q.Pic_Desc, 1, q.Pic_Title)
Else


Error   1   'Pic_Desc' is not a member of 'System.Linq.IQueryable(Of <anonymous type>)'.    

Error   2   'Pic_Title' is not a member of 'System.Linq.IQueryable(Of <anonymous type>)'.   
如果没有(\u cartItem),则
将SPDB变暗为新的SamplePicturesDataContext()
Dim q=来自SPDB中的sp。图片_
其中sp.Id=ItemId_
用{.Pic_Desc=sp.Description选择New_
.Pic_Title=sp.PictureName}
_cartItem=新的cartItem(q.Pic_Desc,1,q.Pic_Title)
其他的
错误1“Pic_Desc”不是“System.Linq.IQueryable(of)”的成员。
错误2“Pic_Title”不是“System.Linq.IQueryable(of)”的成员。

因为类型是
IQueryable
您需要在查询上枚举,以便对其进行计算,然后才能使用它

这应该是可行的(注意我不检查您应该做的
什么都不检查):


这是否有用?
Dim SPDB As New SamplePicturesDataContext()
    Dim q = (From sp In SPDB.Pictures _
            Where sp.Id = ItemId _
            Select New With {.Pic_Desc = sp.Description, _
                             .Pic_Title = sp.PictureName}).SingleOrDefault() ' assume singleordefault due to matching on id values.

    _cartItem = New CartItem(q.Pic_Desc, 1, q.Pic_Title)