gpt4 book ai didi

linq - 这是 LINQ 延迟加载问题吗?

转载 作者:行者123 更新时间:2023-12-04 16:32:50 27 4
gpt4 key购买 nike

我的程序中发生了一些非常奇怪的事情:

我做这个查询 agt.DefaultNr == 1 在一个集合上并获得 3 个项目作为结果:

IEnumerable<Agent> favAgents =
from agt in builtAgents where agt.DefaultNr == 1 select agt;

对于我设置的每个项目 DefaultNr = 0
foreach (Agent noFavAgt in favAgents)
{
noFavAgt.DefaultNr = 0;
}

我做了另一个查询,但由于某种原因,我的 favAgents 集合现在是空的!
IEnumerable<Agent> smallAgents = (from agt in favAgents
where agt.tempResultCount < 30
orderby agt.tempResultCount descending
select agt);

这里发生了什么?

这是 LINQ 延迟加载问题吗?

看起来在我设置所有项目 = 0 后会有某种重新查询,因为我的集合是空的!

最佳答案

这不是延迟加载,而是延迟执行。当您定义初始可枚举时,您正在定义一个查询,而不是一个集合。你是正确的,它正在执行重新查询;每次迭代时 favAgents ,它将执行您定义的查询。如果您想基于不变的查询创建列表,请添加 ToList() .

var favAgents = 
(from agt in builtAgents where agt.DefaultNr == 1 select agt).ToList();

这样做将在内存中创建一个列表并在该时间点缓存查询结果。

关于linq - 这是 LINQ 延迟加载问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3282430/

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