ฉันอ่านแล้วว่ามันไม่ฉลาดที่จะใช้ ToUpper และ ToLower เพื่อทำการเปรียบเทียบสตริงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ แต่ฉันไม่เห็นทางเลือกอื่นเมื่อพูดถึง LINQ-to-SQL อาร์กิวเมนต์ IgnaseCase และ CompareOptions ของ String.Compare จะถูกละเว้นโดย LINQ-to-SQL (ถ้าคุณใช้ฐานข้อมูลที่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่คุณจะได้รับการเปรียบเทียบแบบตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ToLower หรือ ToUpper เป็นตัวเลือกที่ดีที่สุดหรือไม่ ดีกว่าอีกไหม? ฉันคิดว่าฉันอ่านที่ไหนสักแห่งว่า ToUpper ดีกว่า แต่ฉันไม่รู้ว่ามันใช้กับที่นี่หรือไม่ (ฉันกำลังตรวจสอบโค้ดจำนวนมากและทุกคนใช้ ToLower)
Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0
สิ่งนี้แปลเป็นเคียวรี SQL ที่เปรียบเทียบ row.Name กับ "test" และจะไม่ส่งคืน "Test" และ "TEST" บนฐานข้อมูล
LINQQuery.Contains("VaLuE", StringComparer.CurrentCultureIgnoreCase)
LINQQuery.Except(new string[]{"A VaLUE","AnOTher VaLUE"}, StringComparer.CurrentCultureIgnoreCase)
ฮู!