gpt4 book ai didi

c# - .AsQueryable() 是否阻止 IEnumerable 将所有内容拉入内存?

转载 作者:太空宇宙 更新时间:2023-11-03 11:41:20 24 4
gpt4 key购买 nike

因此 IQueryable 允许您的查询在数据库级别执行,而不是像 IEnumerable 那样在内存中的对象集合上执行。如果我有一个 IEnumerable 并在其上调用 AsQueryable() 扩展方法,这是否意味着它现在是一个 IQueryable 并且所有调用都将在数据库中执行?或者 IEnumerable 是否已加载到内存中?

我知道 IEnumerable 已延迟执行,那么这是否意味着在迭代集合之前调用 AsQueryable 将使它的所有查询都在数据库中执行?

抱歉,我是新手,这一切都很困惑。

PS - 我在 EF 4.0 中使用 LINQ to Entities。

最佳答案

如果您拥有的对象(如 IEnumerable<T> )也实现 IQueryable<T>那么你可能很幸运,但在一般情况下:不。也许除了那个极端情况之外,为时已晚,您不能再“组合”查询(即添加一个将由数据库处理的“where”条件)。相反,您拥有的是 LINQ-to-Objects 尽其所能使看起来可查询。但是数据将从底层可枚举中线性消耗。

关于c# - .AsQueryable() 是否阻止 IEnumerable 将所有内容拉入内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4704261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com