首頁 > 後端開發 > C++ > 如何在 LINQ to Entities 中執行區分大小寫的比較?

如何在 LINQ to Entities 中執行區分大小寫的比較?

Barbara Streisand
發布: 2025-01-21 17:36:09
原創
241 人瀏覽過

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

LINQ to Entities中的大小寫不敏感比較

與LINQ to Objects不同,LINQ to Entities不直接支援大小寫敏感比較。這是因為LINQ to Entities將Lambda表達式轉換為SQL語句,這些語句最終會由資料庫(例如SQL Server)執行。預設情況下,SQL Server會使用大小寫不敏感的排序規則,這表示下列查詢將始終傳回符合項,而不管大小寫如何:

<code>context.Thingies.First(t => t.Name == "ThingamaBob");</code>
登入後複製

伺服器端解決方案

要在LINQ to Entities中實作大小寫敏感比較,必須修改相關欄位的資料庫排序規則。例如,以下SQL語句將「Thingies」表中「Name」列的排序規則變更為大小寫敏感:

<code>ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS;</code>
登入後複製

客戶端解決方案

雖然不是理想的方案,但存在一種客戶端變通方法,它同時利用LINQ to Entities和LINQ to Objects:

<code>var result = context.Thingies.Where(t => t.Name == "ThingamaBob")
                   .AsEnumerable()
                   .First(t => t.Name == "ThingamaBob");</code>
登入後複製

在這種方法中,AsEnumerable() 將查詢轉換為記憶體中枚舉,允許您使用 Where() 執行二次大小寫敏感比較。但是,此變通方法會向資料庫引入額外的查詢。

以上是如何在 LINQ to Entities 中執行區分大小寫的比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板