2009-02-09 43 views
1

SQL服務器正在執行基於COLLATE選項的查詢,因此您可以定義如何執行比較(區分大小寫)。您可以在創建表格或查詢執行期間執行此操作。LINQ中的等號

如何在我的LINQ to SQL查詢期間控制排序規則?當我做table.Column == stringValue比較時,我的查詢會不會不區分大小寫?

回答

3

我不與分頁選項很多工作,但會採取我最好的刺傷了這個問題。

根據這一article:當翻譯查詢

的LINQ to SQL不考慮服務器設置。

如果COLLATE是一個數據庫/表/列設置,它應該只在數據庫中設置,並準備好在連接時去。

如果COLLATE是連接設置,則可以獲取datacontext的連接並運行命令來設置它。做這件事的好地方可能在partial void OnCreated方法中。

-2

您必須記住,L2S是一個對象關係映射系統,因此它試圖比較對象並轉換爲SQL。在L2S中,如果您想比較兩個字符串,您必須將它們兩個都作爲ToLower()進行比較。

另一件對我來說就是'陷阱'的情況是,在L2S中,如果您提供的比較值爲空,字符串比較將無法正確評估。所以,在你的例子中,如果table.Column爲null並且stringValue也是,你的查詢將不會返回正確的結果(我假設stringValue是你的代碼中定義的變量)。爲了將字符串與L2S中的null進行比較,您必須將其明確地與null進行比較:table.Column == null。

退房這個article

+0

它不回答我的任何問題... – LicenseQ 2009-02-09 19:09:23

+0

它回答了一個。如果您必須使用ToLower()進行比較,則您的L2S查詢從不區分大小寫。 – 2009-02-09 19:11:56