Rof*_*fni 3 c# linq performance
我们正在尝试优化我们的一些方法.我们使用Redgate的Performance Profiler来查找一些性能泄漏.
我们的工具在几种方法中使用Linq来对象.但我们注意到,FirstOrDefault对于具有+/- 1000个对象的集合,需要很长时间.
探查器还会警告查询非常慢.我已经使用探查器结果添加了图像.
无法将集合添加到数据库,然后查询数据库.有什么建议?
谢谢 !
private SaldoPrivatiefKlantVerdeelsleutel GetParentSaldoPrivatiefKlantVerdeelsleutel(SaldoPrivatiefKlantVerdeelsleutel saldoPrivatiefKlantVerdeelsleutel, SaldoGebouwRekeningBoeking boeking, int privatiefKlant)
{
SaldoPrivatiefKlantVerdeelsleutel parentSaldoPrivatiefKlantVerdeelsleutel = null;
if (saldoPrivatiefKlantVerdeelsleutel != null)
{
try
{
parentSaldoPrivatiefKlantVerdeelsleutel = saldoPrivatiefKlantVerdeelsleutel.AfrekenPeriode.SaldoPrivatiefKlantVerdeelsleutelCollection
.FirstOrDefault(s => (boeking == null || (s.SaldoVerdeelsleutel != null &&
(s.SaldoVerdeelsleutel.GebouwVerdeelSleutel.ID == boeking.SaldoGebouwRekeningVerdeling.SaldoGebouwRekening.SaldoVerdeelsleutel.GebouwVerdeelSleutel.ID)))
&& s.PrivatiefKlant.ID == privatiefKlant);
}
catch (Exception ex)
{ }
}
return parentSaldoPrivatiefKlantVerdeelsleutel;
}
Run Code Online (Sandbox Code Playgroud)
图像: 个人资料报告
你应该能够通过重写它来加快速度
saldoPrivatiefKlantVerdeelsleutel.AfrekenPeriode.SaldoPrivatiefKlantVerdeelsleutelCollection
.Where(s => (boeking == null || (s.SaldoVerdeelsleutel != null &&
(s.SaldoVerdeelsleutel.GebouwVerdeelSleutel.ID == boeking.SaldoGebouwRekeningVerdeling.SaldoGebouwRekening.SaldoVerdeelsleutel.GebouwVerdeelSleutel.ID))) && s.PrivatiefKlant.ID == privatiefKlant)
.FirstOrDefault()
Run Code Online (Sandbox Code Playgroud)
请参阅为什么LINQ .Where(谓词).First()比.First(谓词)快?为什么这更快.
| 归档时间: |
|
| 查看次数: |
7455 次 |
| 最近记录: |