कभी भी .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इसके बजाय, यदि संभव हो तो आपके कार्य के लिए- स्तंभ का डिफ़ॉल्ट मिलान बदलें?