2011-07-18 19 views
0

這裏是我的功能:實體框架:沒有可訪問的'哪裏'可以調用而不縮小轉換?

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 

在。凡()我收到以下錯誤:

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()和其他函數。

謝謝。

回答

0

嗯,好像答案是顯而易見的,我只是沒有得到,所有我需要做的是C輸入其中表達的類型,像這樣的參數中的任何一個:

.Where(Ctype(Function(x) x.Publish = True And x.startTime <= startingDate, Func(Of Article, Boolean))) 
0

嘗試撥打ToList()。這將得到它​​

+0

不能做,要麼,什麼我後,把說「不能解析符號(X))。這不是示數,因爲我想要的結果轉換成一個沒有調用ToList()的列表,它說它不知道重載哪個方法在查詢中使用,但我不知道如何告訴它哪一個。我以前從未遇到過這個問題,因爲通常我只是過去在Using塊中使用查詢,但我只是修改了我的框架,以新的方式處理數據上下文,現在它彈出。 – SventoryMang

2

我意識到這篇文章很老,但我最近遇到了同樣的問題,原來是因爲我正在評估一個布爾值? =真。我通過在我的布爾值上調用.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) 
相關問題