LINQ OrderBy.First{OrDefault} karmaşıklığı artırıldı
veFirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)OrderBy.
uygulamasının OrderBy.
First<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) uygulanması değişti ve bu da işlemin karmaşıklığının artmasına neden oldu.
Açıklama değiştirildi
.NET Core 1.x - 3.x'te, çağrısı OrderBy veya OrderByDescending ardından First<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) gelen veya FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) karmaşık bir şekilde O(N)
çalışan. Yalnızca ilk (veya varsayılan) öğe gerekli olduğundan, öğeyi bulmak için yalnızca bir numaralandırma gerekir. Ancak, veya için sağlanan First<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) koşul tam olarak N
kez çağrılır; burada N
FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) dizinin uzunluğudur.
.NET 5 ve sonraki sürümlerde, karmaşıklık yerine çağırma veya takip etme First<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) veya FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) karmaşıklık ile O(N log N)
çalışma gibi bir değişiklik yapılmıştır.OrderByDescendingOrderByO(N)
Ancak, verilen veya FirstOrDefault<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) birden az N
kez çağrılabilir koşulFirst<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>), genel performans için daha önemlidir.
Not
Bu değişiklik , .NET Framework'teki işlemin uygulanması ve karmaşıklığıyla eşleşir.
Değişiklik nedeni
Koşulu daha az kez çağırmanın avantajı, genel karmaşıklığı daha düşük olduğu için .NET Core 1.0'da kullanıma sunulan uygulama geri döndürüldü. Daha fazla bilgi için bu dotnet/runtime sorununa bakın.
Sürüm kullanıma sunulmuştur
5.0
Önerilen eylem
Geliştirici tarafından herhangi bir işlem yapılması gerekmez.