首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在我的MVC应用程序中,为什么添加这段代码后性能会这么慢呢?

在我的MVC应用程序中,为什么添加这段代码后性能会这么慢呢?
EN

Stack Overflow用户
提问于 2019-01-29 17:57:00
回答 2查看 66关注 0票数 0

有没有办法有同样的想法,也就是将一天的时间设置在这些值上,而不会对搜索时间造成巨大的影响?如果没有这段代码,它就会在一秒钟内加载一个新页面。添加它之后,页面加载之间的时间将达到6-7秒。

代码语言:javascript
复制
//incidents is an IQueryable

//Set date backwards one day if incident is entered during third shift after midnight
        for (var x = 0; x < incidents.Count(); x++){
            DateTime createdDate = incidents.ToList().ElementAt(x).DateCreated;
            TimeSpan createdTime = createdDate.TimeOfDay;
            if (createdTime > startTime && createdTime < endTime){
                incidents.Skip(x).First().DateCreated = new DateTime(2019,01,01);
            }
        }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-29 18:00:29

因为incidents是一个IQueryable,所以您要执行数据库调用2x+1时间。一次给Count,一次给ToList,一次给Skip(x).First

您可以尝试在循环之前调用ToList(),并处理水合物列表,以查看性能是否有所提高。

票数 9
EN

Stack Overflow用户

发布于 2019-01-29 18:04:26

这可能与许多.ToList().Skip().Count()调用有关。相反,请尝试以下几点:

代码语言:javascript
复制
foreach (var incident in incidents.ToList())
{
    var createdDate = incident.DateCreated;
    var createdTime = createdDate.TimeOfDay;
    var index = incidents.IndexOf(indcident);
    if (createdTime > startTime && createdTime < endTime){
        incidents.Skip(index).First().DateCreated = new DateTime(2019,01,01);
    }
}

而且,我对.Skip()不是很熟悉,但你能不能把代码简化成这样呢?

代码语言:javascript
复制
foreach (var incident in incidents.ToList())
{
    var createdDate = incident.DateCreated;
    var createdTime = createdDate.TimeOfDay;
    if (createdTime > startTime && createdTime < endTime){
        incident.DateCreated = new DateTime(2019, 01, 01);
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54426998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档