Dalam LINQ, susunan kaedah sambungan tidak selalu mempengaruhi prestasi seperti yang diharapkan. Secara berlawanan, meletakkan Where
sebelum FirstOrDefault
tidak semestinya menghasilkan peningkatan prestasi.
Memahami pelaksanaan LINQ
Kaedah sambungan LINQ dilaksanakan dengan malas, bermakna mereka tidak melaksanakan operasi mereka dengan serta-merta. Sebaliknya, mereka mengembalikan urutan terbilang yang mengandungi hasil yang berpotensi. Apabila melelaran ke atas jujukan, operasi dilakukan mengikut keperluan.
Di mana dan FirstOrDefault
Where
menapis jujukan berdasarkan predikat, manakala FirstOrDefault
mengembalikan elemen padanan pertama. Selalunya seseorang akan berfikir adalah lebih cekap untuk menapis sebelum mengambil (iaitu Where
sebelum FirstOrDefault
).
Situasi sebenar
Walau bagaimanapun, dalam kes Where
dan FirstOrDefault
, Where
tidak perlu mengulangi semua elemen padanan. Ia hanya perlu mencari perlawanan pertama dan mengembalikannya dengan segera. Oleh itu, susunan kaedah ini tidak menjejaskan prestasi, kerana Where
beroperasi atas permintaan dan semua elemen padanan tidak dikekalkan sebelum menggunakan FirstOrDefault
.
Analogi
Untuk menggambarkan konsep ini, pertimbangkan situasi di mana seseorang sedang mencari kad tertentu dalam dek kad. Orang yang mencari kad merah hanya perlu terus membelek kad sehingga dia menjumpai kad merah. Mereka tidak perlu melalui seluruh dek dan mengisih semua kad mengikut warna sebelum mencari kad merah pertama.
Kesimpulan
Ringkasnya, susunan Where
dan FirstOrDefault
dalam ungkapan LINQ tidak menjejaskan prestasi dengan ketara. Ini kerana Where
dilaksanakan secara malas dan hanya elemen padanan pertama yang perlu dicari, tanpa mengira kedudukan FirstOrDefault
.
Atas ialah kandungan terperinci Adakah LINQ `Where` Before `FirstOrDefault` Benar-benar Meningkatkan Prestasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!