Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Melakukan Perbandingan Sensitif Kes dalam LINQ kepada Entiti?

Bagaimanakah Saya Boleh Melakukan Perbandingan Sensitif Kes dalam LINQ kepada Entiti?

Barbara Streisand
Lepaskan: 2025-01-21 17:36:09
asal
169 orang telah melayarinya

How Can I Perform Case-Sensitive Comparisons in LINQ to Entities?

Perbandingan tidak sensitif huruf dalam LINQ kepada Entiti

Tidak seperti LINQ kepada Objek, LINQ kepada Entiti tidak secara langsung menyokong perbandingan sensitif huruf besar-besaran. Ini kerana LINQ kepada Entiti menukar ungkapan Lambda kepada pernyataan SQL, yang akhirnya dilaksanakan oleh pangkalan data (seperti SQL Server). Secara lalai, SQL Server menggunakan pengumpulan tidak sensitif huruf besar-besaran, yang bermaksud pertanyaan berikut akan sentiasa mengembalikan padanan tanpa mengira kes:

<code>context.Thingies.First(t => t.Name == "ThingamaBob");</code>
Salin selepas log masuk

Penyelesaian bahagian pelayan

Untuk melaksanakan perbandingan sensitif huruf besar dalam LINQ kepada Entiti, pengumpulan pangkalan data lajur yang berkaitan mesti diubah suai. Sebagai contoh, pernyataan SQL berikut menukar himpunan lajur "Nama" dalam jadual "Thingies" menjadi peka huruf besar-kecil:

<code>ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS;</code>
Salin selepas log masuk

Penyelesaian pelanggan

Walaupun tidak sesuai, terdapat penyelesaian sebelah pelanggan yang memanfaatkan kedua-dua LINQ kepada Entiti dan LINQ kepada Objek:

<code>var result = context.Thingies.Where(t => t.Name == "ThingamaBob")
                   .AsEnumerable()
                   .First(t => t.Name == "ThingamaBob");</code>
Salin selepas log masuk

Dalam pendekatan ini, AsEnumerable() menukar pertanyaan kepada penghitungan dalam memori, membolehkan anda melakukan perbandingan sensitif huruf besar kedua menggunakan Where(). Walau bagaimanapun, penyelesaian ini memperkenalkan pertanyaan tambahan kepada pangkalan data.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melakukan Perbandingan Sensitif Kes dalam LINQ kepada Entiti?. 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