Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Cekap Mengambil Baris Rawak dengan Syarat Menggunakan Linq ke SQL?

Bagaimana untuk Cekap Mengambil Baris Rawak dengan Syarat Menggunakan Linq ke SQL?

Patricia Arquette
Lepaskan: 2025-01-26 16:12:10
asal
572 orang telah melayarinya

How to Efficiently Fetch a Random Row with Conditions Using Linq to SQL?

Mengambil Baris Rawak Memenuhi Kriteria Khusus Menggunakan Linq ke SQL

Mengekstrak baris pangkalan data rawak yang memenuhi syarat tertentu menggunakan Linq ke SQL boleh menjadi rumit. Penyelesaian biasa melibatkan simulasi fungsi takrif pengguna (UDF) dalam pangkalan data.

Untuk mencapai ini, masukkan fungsi berikut ke dalam kelas separa konteks data anda:

<code class="language-csharp">partial class MyDataContext {
     [Function(Name="NEWID", IsComposable=true)] 
     public Guid Random() 
     { 
         throw new NotImplementedException(); 
     }
}</code>
Salin selepas log masuk

Perhatikan bahawa fungsi C# ini tidak dipanggil secara langsung; tujuannya adalah untuk memanfaatkan fungsi NEWID() SQL Server untuk pesanan rawak. Ini dilakukan dengan memesan pertanyaan anda menggunakan ctx.Random():

<code class="language-csharp">var cust = (from row in ctx.Customers
           where row.IsActive 
           orderby ctx.Random()
           select row).FirstOrDefault();</code>
Salin selepas log masuk

Kaedah ini berfungsi dengan baik untuk set data yang lebih kecil. Walau bagaimanapun, prestasi boleh terjejas dengan jadual yang lebih besar. Untuk set data yang banyak, pendekatan yang lebih cekap melibatkan pengiraan baris dahulu dan kemudian memilih indeks rawak:

<code class="language-csharp">var qry = from row in ctx.Customers
          where row.IsActive
          select row;

int count = qry.Count(); // First database query
int index = new Random().Next(count);

Customer cust = qry.Skip(index).FirstOrDefault(); // Second database query</code>
Salin selepas log masuk

Alternatif ini memerlukan dua interaksi pangkalan data tetapi mengelakkan potensi kesesakan prestasi untuk memesan jadual besar secara rawak. Pilih kaedah yang paling sesuai dengan saiz data dan keperluan prestasi anda.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengambil Baris Rawak dengan Syarat Menggunakan Linq ke SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan