Невозможно привести объект типа 'WhereEnumerableIterator`1 [Object]' к типу System.Linq.IQueryable`1 [Object] ' - PullRequest
0 голосов
/ 06 мая 2018

Я использую некоторый бесплатный исходный код для создания сайта электронной коммерции в WebForms. Это версия Visual Basic Начало работы с веб-формами ASP.NET 4.5 и Visual Studio 2013 . Я был успешным, пока я не закодировал страницу ProductDetails.aspx.vb. Я соответственно заменил имена и свойства своих объектов, но когда я запускаю проект, я получаю эту ошибку:

Невозможно привести объект типа 'WhereEnumerableIterator 1[LethalLibrary.Book]' to type 'System.Linq.IQueryable 1 [LethalLibrary.Book]'.

Описание: Произошло необработанное исключение во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidCastException: Невозможно привести объект типа 'WhereEnumerableIterator 1[LethalLibrary.Book]' to type 'System.Linq.IQueryable 1 [LethalLibrary.Book]'.

Отличается ли Linq от VS2017 от 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

1 Ответ

0 голосов
/ 08 мая 2018

Я нашел ответ на форумах ASP.NET. Добавление AsQueryable() к моей query переменной исправило это!

Public Function GetBook(BookId As Nullable(Of Integer)) As IQueryable(Of Book)
    Dim BookTitle As String = "aaaa"
    Dim db = New ApplicationDbContext()
    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)))).AsQueryable()
    ElseIf Not String.IsNullOrEmpty(BookTitle) Then
        query = (query.Where(Function(p) String.Compare(p.BookTitle, BookTitle) = 0)).AsQueryable()
    Else
        query = Nothing
    End If
    Return query
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...