簡體   English   中英

Linq在查詢中使用TakeWhile

[英]Linq using TakeWhile in a query

嗨,我剛剛開始學習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.

http://blogs.msdn.com/b/wriju/archive/2009/01/02/linq-to-entity-skip-and-take-method-does-not-中檢查LINQ to Entity中受支持和不受支持的方法。 work.aspx 然后打開分頁方法頁面,您將看到不支持TakeWhile(在底部)。

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

舊代碼:

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

新代碼:

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

新代碼應該修復該錯誤,它將RuleBook_Mapping表中的所有記錄都帶到本地內存,如果可能的話,在ToList()之前添加過濾器將有助於提高性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM