कभी भी .ToLower()
. का इस्तेमाल न करें केस-असंवेदनशील तुलना करने के लिए। ऐसा क्यों है:
- यह संभवतः गलत है (आपका क्लाइंट संयोजन, तुर्की हो सकता है, और आपका डीबी संयोजन नहीं हो सकता है)।
- यह अत्यधिक है अक्षम; SQL एमिटेड
LOWER
है=
. के बजाय केस-असंवेदनशील संयोजन के साथ।
इसके बजाय, StringComparison.OrdinalIgnoreCase
. का उपयोग करें या StringComparison.CurrentCultureIgnoreCase
:
var q = from f in Context.Foos
where f.Bar.Equals("hi", StringComparison.OrdinalIgnoreCase)
select f;
लेकिन Contains()
. के लिए एक समस्या है:Equals
के विपरीत , StartsWith
, आदि, इसमें StringComparison
. के लिए अधिभार नहीं है बहस। क्यों? अच्छा प्रश्न; माइक्रोसॉफ्ट से पूछें।
वह, LOWER
. पर SQL सर्वर की सीमा के साथ संयुक्त इसका मतलब है कि आप जो चाहते हैं उसे करने का कोई आसान तरीका नहीं है।
संभावित समाधान में शामिल हो सकते हैं:
- एक पूर्ण पाठ अनुक्रमणिका का उपयोग करें, और एक प्रक्रिया में खोज करें।
Equals
का उपयोग करें याStartsWith
इसके बजाय, यदि संभव हो तो आपके कार्य के लिए- स्तंभ का डिफ़ॉल्ट मिलान बदलें?