VB.NET Entity Framework проблема с предложением WHERE и логическими значениями - PullRequest
1 голос
/ 18 октября 2011

Я довольно новичок в MVC и Entity Framework, но я уверен, что это должно быть прямо вперед.У меня есть класс с логическим флагом «Активный».Затем у меня есть функция, которая возвращает результаты по убыванию даты.Все, что я хочу сделать, это убедиться, что возвращаются только активные записи.Должно быть простым, но завершается ошибкой со следующей ошибкой:

Ошибка 13 Не удалось разрешить перегрузку, поскольку с этими аргументами нельзя вызвать доступное «Где»: Метод расширения «Public Function Where (предикат As System.Func (Of Review, Integer, Boolean)) Как System.Collections.Generic.IEnumerable (Of Review) ', определенный в' System.Linq.Enumerable ': значение типа' Boolean 'нельзя преобразовать в' System.Func (Of PowellCasting).Models.Review, Integer, Boolean) '.Метод расширения 'Public Function Where (предикат As System.Func (Of Review, Boolean)) As System.Collections.Generic.IEnumerable (Of Review)', определенный в 'System.Linq.Enumerable': значение типа 'Boolean' не может бытьпреобразован в 'System.Func (Of PowellCasting.Models.Review, Boolean)'.Метод расширения 'Public Function Where (предикат As System.Linq.Expressions.Expression (Of System.Func (Of Review, Integer, Boolean)))) Как System.Linq.IQueryable (Of Review)', определенный в 'System.Linq.Queryable': Значение типа' Boolean 'нельзя преобразовать в' System.Linq.Expressions.Expression (Of System.Func (Of PowellCasting.Models.Review, Integer, Boolean)) '.Метод расширения «Открытая функция где (предикат As System.Linq.Expressions.Expression (Of System.Func (Of Review, Boolean)))» As System.Linq.IQueryable (Of Review) », определенный в« System.Linq.Queryable »:Значение типа 'Boolean' не может быть преобразовано в 'System.Linq.Expressions.Expression (Of System.Func (Of PowellCasting.Models.Review, Boolean))'.C: \ Web Projects \ PowellCasting \ PowellCasting \ PowellCasting \ Models \ Review.vb 42 14 PowellCasting

Выглядит так, как будто ему не нравится сравнивать логические значения, но они имеют одинаковый тип данных.Я уверен, что это должно быть просто, но был бы признателен за помощь.Пожалуйста, смотрите мой код ниже.

Публичный обзор класса

Private PowellCastingDB As PowellCastingEntites = New PowellCastingEntites

<ScaffoldColumn(False)>
Public Property ReviewID As Integer
<Required(ErrorMessage:="An review title is required")>
<StringLength(256)>
<DisplayName("Title")>
Public Property Title As String
<DisplayName("Heading")>
Public Property Heading As String
<DisplayName("ReviewText")>
<StringLength(4096)>
Public Property ReviewText As String
<DisplayName("Author")>
<StringLength(256)>
Public Property Author As String
<DisplayName("Publication")>
<StringLength(150)>
Public Property Publication As String
<DisplayName("PublicationDate")>
Public Property PublicationDate As Date
<DisplayName("PublicationLink")>
<StringLength(1000)>
Public Property PublicationLink As String
<DisplayName("Image")>
<StringLength(512)>
Public Property Image As String
<DisplayName("Active")>
Public Property Active As Boolean

Public Property Reviews As List(Of Review)

Public Function GetLatestReviews(ByVal count As Integer) As List(Of Review)
  Return PowellCastingDB.Reviews.Where(Active = True).
  OrderByDescending(Function(a) a.PublicationDate).
   Take(count).
    ToList()
End Function

Конечный класс Конечное пространство имен

Ответы [ 2 ]

4 голосов
/ 18 октября 2011

Вам нужно указать лямбда-выражение:

Return PowellCastingDB.Reviews.Where(Function(x) x.Active = True).
    (rest of query)

Или просто:

Return PowellCastingDB.Reviews.Where(Function(x) x.Active).
    (rest of query)
1 голос
/ 18 октября 2011

Попробуйте это:

Return PowellCastingDB.Reviews.Where(Function(review) review.Active = True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...