Upper vs Lower Case
Converting to either upper case or lower case in order to do case-insensitive comparisons is incorrect due to "interesting" features of some cultures, particularly Turkey. Instead, use a StringComparer with the appropriate options.
MSDN has some great guidelines on string handling. You might also want to check that your code passes the Turkey test.
EDIT: Note Neil's comment around ordinal case-insensitive comparisons. This whole realm is pretty murky :(
From Microsoft on MSDN:
Best Practices for Using Strings in the .NET Framework
Recommendations for String Usage
- Use the String.ToUpperInvariant method instead of the String.ToLowerInvariant method when you normalize strings for comparison.
Why? From Microsoft:
Normalize strings to uppercase
There is a small group of characters that when converted to lowercase cannot make a round trip.
What is example of such a character that cannot make a round trip?
- Start: Greek Rho Symbol (U+03f1) ϱ
- Uppercase: Capital Greek Rho (U+03a1) Ρ
- Lowercase: Small Greek Rho (U+03c1) ρ
ϱ , Ρ , ρ
.NET Fiddle
Original: ϱ
ToUpper: Ρ
ToLower: ρ
That is why, if your want to do case insensitive comparisons you convert the strings to uppercase, and not lowercase.
So if you have to choose one, choose Uppercase.