Penggunaan LINQ ke SQL untuk menanyakan pangkalan data adalah cara yang kuat untuk mendapatkan data pangkalan data relasi. Walau bagaimanapun, apabila menggunakan syarat -syarat tertentu, anda boleh membawa beberapa cabaran apabila anda memilih garis rawak. Artikel ini membincangkan penyelesaian kepada masalah ini dengan cekap.
menggunakan fungsi adat pengguna analog (UDF)
Linq ke SQL tidak mempunyai cara langsung untuk memilih garis rawak. Untuk mengatasi had ini, simulasi UDF boleh dibuat dalam pangkalan data. Ini dapat dicapai dengan menambahkan kaedah kepada beberapa konteks data, seperti yang ditunjukkan di bawah:
UDF ini bertindak sebagai penempatan untuk membolehkan penyortiran rawak dalam SQL Server.
partial class MyDataContext { [Function(Name="NEWID", IsComposable=true)] public Guid Random() { // 证明我们的C#代码未使用... throw new NotImplementedException(); } }
Setelah simulasi UDF disediakan, anda boleh menyusun pertanyaan Linq dengan memanggil kaedah . Ini akan menunjukkan bahawa pangkalan data menggunakan fungsi <> untuk melakukan penyortiran rawak.
Pertanyaan ini akan mengambil satu baris rawak tunggal yang memenuhi syarat yang ditentukan. ctx.Random()
NEWID()
<能> Langkah berjaga -jaga prestasi
var cust = (from row in ctx.Customers where row.IsActive // 你的筛选条件 orderby ctx.Random() select row).FirstOrDefault();
Harus diingat bahawa menggunakan kaedah UDF ini boleh menjejaskan prestasi jadual besar. Dalam kes ini, kaedah yang lebih berkesan adalah untuk menentukan bilangan baris (menggunakan kaedah
), menghasilkan indeks rawak, dan kemudian gunakan kaedahdan untuk mencari garisan rawak.
kaedah pengiraan Count()
Skip()
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mendapatkan Baris Rawak dengan Syarat Menggunakan Linq ke SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!