2012-05-22 3 views
1

Я использую таблицы хранения Windows Azure и хочу запросить объект. Пользователь вводит строку, которую я искать в базе данных как таковой:Как выполнить чувствительный к регистру запрос LINQ в Azure?

var myKey = "SomeCaseSensitiveKeyInputByTheUser"; 

var someObject = (from o in dataContext.Objects 
    where o.SomeString.Equals(myKey) 
    select o).FirstOrDefault(); 

Однако, по некоторым причинам, все сравнения строк, как представляется, чувствительны к регистру (как == и string.Equals()). Тем не менее, мне нужно сопоставить точную оболочку строки ввода пользователя.

Как это сделать в моем запросе LINQ?

+0

ли вы попробовать использовать StringComparison перегрузку равных? Так как i.SomeString.Equals (mykey, StringComparer.CurrentCulture) –

ответ

1

Использование == такое же, как .Equals(..), так как он просто называет этот метод. Вы можете заставить использовать чувствительно к регистру сравнения, используя перегрузку Equal() пропускание string.comparison перечисления

CurrentCulture     Compare strings using culture-sensitive sort rules and the current culture. 
CurrentCultureIgnoreCase   Compare strings using culture-sensitive sort rules, the current culture, and ignoring the case of the strings being compared. 
InvariantCulture     Compare strings using culture-sensitive sort rules and the invariant culture. 
InvariantCultureIgnoreCase  Compare strings using culture-sensitive sort rules, the invariant culture, and ignoring the case of the strings being compared. 
Ordinal       Compare strings using ordinal sort rules. 
OrdinalIgnoreCase    Compare strings using ordinal sort rules and ignoring the case of the strings being compared. 

подробнее на:

http://msdn.microsoft.com/en-us/library/system.stringcomparison.aspx

+0

Я пробовал перегрузки, но, оказывается, я сделал довольно глупую ошибку в другом месте. CurrentCulture сделал трюк, хотя в конце концов. Благодарю. –

Смежные вопросы