提升代码速度 foreach (R_DistributionAllopatry r_DistributionAllopatry in q) { BaseBusiness<DMS_TempData> DMS2_Month = new BaseBusiness<DMS_TempData>("monthdb"); var DMS2_MonthService = DMS2_Month.Service; //var qq = Service.GetIQueryable<DMS_TempData>().Where(a => a.SampleID == r_DistributionAllopatry.NewSampleId); var qq = DMS2_MonthService.GetListBySql<DMS_TempData>("select * from DMS_TempData" + r_DistributionAllopatry.TestDataTableName + " where sampleId='" + r_DistributionAllopatry.NewSampleId + "'"); if (qq.Count() > 0) r_DistributionAllopatry.IsCompleted = true; }
时间: 2024-03-20 21:40:16 浏览: 221
这段代码中存在较大的性能问题。主要有以下两点:
1. 在 foreach 循环中,每次都会实例化一个 BaseBusiness 对象,这可能会导致不必要的开销。可以将实例化的代码提到循环外部,避免重复创建对象。
2. 在循环内部,执行了一条 SQL 查询语句,这也会导致性能问题。可以考虑将查询语句改为使用 Entity Framework 的 Linq 语句,或者使用存储过程等方式来避免 SQL 查询语句的性能问题。
改进后的代码如下所示:
```
BaseBusiness<DMS_TempData> DMS2_Month = new BaseBusiness<DMS_TempData>("monthdb");
var DMS2_MonthService = DMS2_Month.Service;
var query = DMS2_MonthService.GetIQueryable<DMS_TempData>();
foreach (R_DistributionAllopatry r_DistributionAllopatry in q)
{
var qq = query.Where(a => a.SampleID == r_DistributionAllopatry.NewSampleId);
if (qq.Count() > 0)
r_DistributionAllopatry.IsCompleted = true;
}
```
以上是基于代码片段进行的简单分析,如果您有更多的代码或者其他方面的问题,欢迎继续提问。
阅读全文