【发布时间】:2018-10-16 16:02:36
【问题描述】:
我正在使用一些免费的源代码在 WebForms 中创建一个电子商务网站。它是Getting Started with ASP.NET 4.5 Web Forms and Visual Studio 2013 的Visual Basic 版本。在编写 ProductDetails.aspx.vb 页面之前,我一直是成功的。我相应地替换了我的对象名称和属性,但是当我运行项目时,我得到了这个错误:
无法转换类型为“WhereEnumerableIterator1[LethalLibrary.Book]' to type 'System.Linq.IQueryable1[LethalLibrary.Book]”的对象。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息: System.InvalidCastException:无法转换类型为“WhereEnumerableIterator1[LethalLibrary.Book]' to type 'System.Linq.IQueryable1[LethalLibrary.Book]”的对象。
VS2017 的 Linq 与 VS2013 有什么不同吗?我该如何解决这个问题?
Public Function GetBook(<QueryString("BookID")> BookId As Nullable(Of Integer)) As IQueryable(Of Book)
Dim db = New BookContext()
Dim query As IQueryable(Of Book) = db.Books
If BookId.HasValue AndAlso BookId > 0 Then
query = query.Where(CType(Function(p) p.BookID = BookId, Func(Of Book, Boolean)))
ElseIf Not String.IsNullOrEmpty(BookTitle) Then
query = query.Where(Function(p) String.Compare(p.BookTitle, BookTitle) = 0)
Else
query = Nothing
End If
Return query
End Function
【问题讨论】:
标签: asp.net vb.net linq webforms