Entity Framework: Нет доступного «где», которое можно вызвать без сужения преобразования? - PullRequest
0 голосов
/ 18 июля 2011

Вот моя функция:

Public Function ListPublishedArticles(ByVal startingDate As DateTime) As List(Of Article)
        Dim db As ArticleEntities = ArticleEntitiesFactory.Current()
        Dim listArticles As List(Of Article) = Nothing

        If startingDate <> Nothing Then
            listArticles = db.Articles.Where(Function(x) x.Publish = True And x.startTime <= startingDate)
        End If

        Return listArticles
    End Function

В .Where () я получаю следующую ошибку:

No Accessible 'where' can be called without narrowing conversion. Candidates are
   Public Function Where(Of Article)(IEnumerable(Of Article), Func(Of Article, Boolean)) As IEnumerable(Of Article) (In Class Enumerable)
   Public Function Where(Of Article)(IQueryable(Of Article), Expression(Of Func(Article, Boolean))) As IQueryable(Of Article) (In Class Queryable)

Я понимаю ошибку, но не уверен, как ее исправитькак мне сказать какой из них я использую?На msdn говорится, что нужно игнорировать эту ошибку, переключите Option Strict в Off, но он уже выключен.Это не отображается как ошибка в списке ошибок внизу, просто подчеркивается красным, но мешает мне продолжить работу с .OrderBy () и другими функциями.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 22 января 2014

Я понимаю, что этот пост довольно старый, но недавно я столкнулся с той же проблемой, которая оказалась потому, что я оценивал логическое значение?= ПравдаЯ избежал приведения целого выражения, вызывая метод расширения .Equals () в моем логическом значении?параметр т.е.

.Where(Function(x) x.Publish.Equals(True) And x.startTime <= startingDate)

альтернативно

.Where(Function(x) (x.Publish.HasValue AndAlso x.Publish.Value = True) And x.startTime <= startingDate) 
0 голосов
/ 20 июля 2011

Ну, похоже, ответ был очевиден, и я просто не получил, все, что мне нужно было сделать, это CType выражение Where для одного из типов параметров, например:

.Where(Ctype(Function(x) x.Publish = True And x.startTime <= startingDate, Func(Of Article, Boolean)))
0 голосов
/ 18 июля 2011

Попробуйте позвонить ToList(). Это получит List(Of Article)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...