Case insensitive string compare in LINQ-to-SQL

Posted by BlueMonkMN on Stack Overflow See other posts from Stack Overflow or by BlueMonkMN
Published on 2009-05-08T18:41:00Z Indexed on 2010/05/31 12:53 UTC
Read the original article Hit count: 312

Filed under:
|
|
|
|

I've read that it's unwise to use ToUpper and ToLower to perform case-insensitive string comparisons, but I see no alternative when it comes to LINQ-to-SQL. The ignoreCase and CompareOptions arguments of String.Compare are ignored by LINQ-to-SQL (if you're using a case-sensitive database, you get a case-sensitive comparison even if you ask for a case-insensitive comparison). Is ToLower or ToUpper the best option here? Is one better than the other? I thought I read somewhere that ToUpper was better, but I don't know if that applies here. (I'm doing a lot of code reviews and everyone is using ToLower.)

Dim s = From row In context.Table Where String.Compare(row.Name, "test", StringComparison.InvariantCultureIgnoreCase) = 0

This translates to an SQL query that simply compares row.Name with "test" and will not return "Test" and "TEST" on a case-sensitive database.

© Stack Overflow or respective owner

Related posts about .NET

Related posts about sql