Конвертировать Func (Of Type, Boolean) в Выражение (Of Func (Of Type, Boolean))? - PullRequest
0 голосов
/ 21 июля 2011

У меня есть следующий код:

Dim query As IQueryable(Of someObject) = 
    New ObjectQuery(Of someObject)(queryString, db, MergeOption.NoTracking)
        .Where(CType(Function(x) x.Publish = True,
                     Expression(Of Func(Of someObject, Boolean))))

И это дает мне ошибку, которая говорит:

Невозможно преобразовать выражение типа Func (someObject) System.Nullable (Of Boolean) для ввода System.Linq.Expressions.Expression (Of System.Func (someObject, Boolean)).

Я также пробовал:

 .Where(CType(Function(x) x.Publish = True,
                     Expression(Of Func(Of someObject, Nullable(Of Boolean)))))

, который тоже не работает.

Если у меня нет CType, мой where выдает ошибку сужающего преобразования из IQueryable и IEnumerable, так что мне нужно это там, но я не уверен, как записать этот параметр в качестве выражения для него могут быть преобразованы. Любая помощь?

1 Ответ

1 голос
/ 02 августа 2011

Не используйте приведение с CType здесь - создайте выражение напрямую:

Dim expr As Expression(Of Func(Of someObject, Nullable(Of Boolean))) =
    Function(x) x.Publish = True

Dim query As IQueryable(Of someObject) = 
    New ObjectQuery(Of someObject)(queryString, db, MergeOption.NoTracking)
        .Where(expr)

Выражения должны быть созданы как таковые.Невозможно преобразовать существующее Func в выражение.

...