-
我在 C# 里把一个 LINQ 查询当结果反复用,先 Count 再 foreach,结果同一个查询被默默执行了好多遍、数据库往返暴增,我排查了大半天的复盘
我用 LINQ 筛了一批数据 var results = items.Where(...),然后很自然地把它当结果反复用:先 Count 看几条、再 foreach 处理、后面又 Any 判断。结果性能差得离谱,数据源是数据库时同一句 SQL 被重复执行了好几遍,筛选条件含会变的东西时 Count 和 foreach 数量还对不上。深挖才懂是 LINQ 的延迟执行:var results = it…- 0
- 0
-
一次查询被执行五六遍:LINQ 延迟执行避坑复盘
这个性能 bug 藏得极深,深到我盯着代码反复看了好几遍都觉得这逻辑没毛病啊:一个 C# 写的报表接口慢得离谱,要好几秒才返回。我上 profiler 一抓愣住了——一个本该只执行一次的数据库查询竟然被执行了五六次之多,可我代码里明明只查了一次啊,我把查询结果赋给了一个变量,后面只是对这个变量做了点判断遍历统计,怎么会反反复复查库?排查到最后真相指向 C#/LINQ 里一个极其经典却极其隐蔽的特性…- 0
- 0
IEnumerable
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!


