LINQ to Entities:實現區分大小寫的比較
LINQ to Entities 查詢通常繼承 SQL Server 不區分大小寫的特性。本指南探討了在 LINQ to Entities 查詢中強制執行區分大小寫比較的方法。
了解不區分大小寫的行為
LINQ to Entities 將查詢轉換為 SQL。 SQL Server 的預設排序規則不區分大小寫,這表示「Name == 'ThingamaBob'」被視為不區分大小寫的匹配。
資料庫層級(伺服器端)解決方案
最有效的方法是將資料庫列的排序規則修改為區分大小寫。 使用這樣的 SQL 語句:
<code class="language-sql">ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS</code>
此變更可確保 SQL 和 LINQ to Entities 查詢中區分大小寫的比較。
應用程式層級(客戶端)解決方法
如果資料庫修改不切實際,可以實施客戶端解決方案,儘管它的效能較差:
<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
此方法將資料檢索到客戶端,在記憶體中執行區分大小寫的比較。
重要注意事項
ObjectQuery.ToTraceString()
檢查產生的 SQL 並驗證所使用的排序規則。 以上是如何在 LINQ to Entities 中執行區分大小寫的比較?的詳細內容。更多資訊請關注PHP中文網其他相關文章!