2014-05-13 34 views
1

嗨,我剛開始學習LINQ和一直在試圖瞭解TakeWhile使用中的LINQ查詢中使用TakeWhile

在這裏,我已經試過這樣的事情

using ( var db = new OrchestrateDataEntities()) 
     { 


      var y = db.Set<Rulebook_Mapping>(); 
      var xyz = y.TakeWhile(x => x.ID == 2).AsQueryable(); 
      foreach (var item in xyz) 
      { 
       Console.WriteLine(item.ID); 


      } 

     } 
     Console.ReadKey(); 

,然後來到錯誤

LINQ to Entities does not recognize the method 'System.Linq.IQueryable`1[ConFW.Rulebook_Mapping] TakeWhile[Rulebook_Mapping](System.Linq.IQueryable`1[ConFW.Rulebook_Mapping], System.Linq.Expressions.Expression`1[System.Func`2[ConFW.Rulebook_Mapping,System.Boolean]])' method, and this method cannot be translated into a store expression. 
+0

只是好奇你爲什麼需要.AsQueryable() –

+0

它沒有沒有工作,並沒有用過,雖然只是用它 – Vivekh

回答

0

qxg is right,TakeWhile不是由EF實現的,但是您可以在LINQ to Object中使用它。

舊代碼:

var y = db.Set<Rulebook_Mapping>(); 

新代碼:

var y = db.Set<Rulebook_Mapping>().ToList(); 

新代碼應該修正這個錯誤,它帶來的所有記錄在RuleBook_Mapping表到本地內存,如果可能的位置添加過濾器之前ToList( )將有助於表現。