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>
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>
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>
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!