gpt4 book ai didi

c# - 在 IQueryable 中多次执行 ToList

转载 作者:行者123 更新时间:2023-11-30 23:14:28 32 4
gpt4 key购买 nike

我正在尝试微调一些 EF 代码。我可以看到,一个 Iqueryable 被多次转换为列表。这是否意味着,EF 将在调用 tolist 的次数中执行查询(或者)它只执行一次查询并为其余的 tolist 调用返回相同的结果。

最佳答案

每次调用 ToList 时都会计算 IQueryable<>,因此如果循环中有 IQueryable<> 就会出现问题。例如:

var first = context.Something;

foreach(var element in first)
{
var second = context.SomethingElse;
//do something with second
}

//do something with first again

second 将至少评估 first 的 length 次,而 first 将至少评估两次。所以你最好将 second 移到循环之外,并强制使用 ToList 进行评估,这样你将确保 IQueryable<> 只被评估一次,如下所示:

var first = context.Something.ToList();
var second = context.SomethingElse.ToList();

foreach(var element in first)
{
//do something with second
//second will not be evaluated each iteration
}

//do something with first again

关于c# - 在 IQueryable 中多次执行 ToList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43058949/

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