C# Linq在查询中使用TakeWhile

C# Linq在查询中使用TakeWhile,c#,linq,console,C#,Linq,Console,嗨,我刚开始学习linq,一直在努力理解TakeWhile的用法 在这里,我试过这样的东西 using ( var db = new OrchestrateDataEntities()) { var y = db.Set<Rulebook_Mapping>(); var xyz = y.TakeWhile(x => x.ID == 2).AsQueryable(); foreach

嗨,我刚开始学习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实体中受支持和不受支持的方法。然后打开paging method页面,您将看到TakeWhile不受支持(在底部)。

检查LINQ to Entity at中支持和不支持的方法。然后打开paging method页面,您将看到TakeWhile不受支持(在底部)。

,TakeWhile不是由EF实现的,但您可以在LINQ to对象中使用它

旧代码:

var y = db.Set<Rulebook_Mapping>();
var y=db.Set();
新代码:

var y = db.Set<Rulebook_Mapping>().ToList();
var y=db.Set().ToList();
新代码应该会修复错误,它会将RuleBook_映射表中的所有记录带到本地内存,如果可能,在ToList()之前添加where filter将有助于提高性能

,TakeWhile不是由EF实现的,但您可以在LINQ to对象中使用它

旧代码:

var y = db.Set<Rulebook_Mapping>();
var y=db.Set();
新代码:

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

新代码应该会修复错误,它会将RuleBook_映射表中的所有记录带到本地内存,如果可能,在ToList()之前添加where filter将有助于提高性能

我只是好奇你为什么需要。AsQueryable()没有它就不能工作,也不能用它,尽管我用过它。我只是好奇你为什么需要。AsQueryable()没有它就不能工作,也不能用它,尽管我用过它