gpt4 book ai didi

c# - 优化 foreach 循环

转载 作者:行者123 更新时间:2023-11-30 14:16:53 25 4
gpt4 key购买 nike

我有一些代码可以从数据库中提取记录,然后进行简单比较以检查记录是否与特定模块和响应匹配,然后使用计数并显示统计信息。不幸的是,当它处理数据库中超过 1000 条记录时,速度非常慢。

在 nHibernate 中,我打开了延迟加载,这在初始查询时起到了一定的帮助,但是当它到达必须深入研究的这一部分时,它会减慢很多。我想问题是它从许多不同的表中提取数据来获取这些统计信息。

根据一些研究,我似乎应该能够通过编写 linq 语句而不是使用 foreach 循环来加快速度,但我已经进行了几次尝试,但我没有取得太大进展。我想知道是否有人可以帮助我指明正确的方向。或者去一本好的 Linq 教程或书籍,因为我对这个主题知之甚少

我还看到,在类似的情况下,人们建议将作业放入 sql server 中以填充另一个用于查找的表,但我希望尽可能避免这种情况。

这是代码。

int modules = 0;
var sessionsWithPullHits = from session in m_sessions where session.PullHits.Count > 0 select session;

foreach (ISession<PullHitRecord, PushHitRecord> session in sessionsWithPullHits)
{
foreach (var pullHit in session.PullHits)

if ((pullHit.Module == _Module) && (pullHit.Response == _response))
{
modules++;
}
}

非常感谢任何人可以提供的帮助。

最佳答案

林克:

var modules = (from session in m_sessions
from pullHit in session.PullHits
where pullHit.Module == _Module && pullHit.Response == _response
select pullHit).Count();

请注意,我不确定这将如何转换为 SQL,但它是一个 LINQ 语句,所以应该可以工作。

关于c# - 优化 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6749082/

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