почему строка IndexOf() действует нечувствительно к регистру?

Я действительно в тупике. Я изучаю LINQ и использовал Microsoft Visual C# Express Edition для подключения к базе данных SQL Server, содержащей информацию о моих книгах. Я создал классы LINQ to SQL по мере необходимости. Очевидно, что все это работает. Все работает, только я не могу понять, почему, если я ищу "SR" (в верхнем регистре), он находит две записи, "SR-71 Revealed, The Inside Story", как и ожидалось, но он также находит "Faded Sun: Kesrith", где "sr" в нижнем регистре. Я использую метод IndexOf() класса string, который должен выполнять сравнение с учетом регистра, верно? В результате название второй книги отображается, как показано выше, со строчной буквой "sr". Вот соответствующая часть кода:

// normal using directives here
namespace QueryBooksDB {
    class Program {
        static void Main() {
            var urgh = new BooksDataContext();

            Console.WriteLine("Enter a string to search for:");
            string str = Console.ReadLine();

            var list = from book in urgh.Books
                        where book.Title.IndexOf(str) > -1
                        orderby book.Title
                        select new { ID = book.BookId, book.Title, book.Location };

            foreach ( var b in list ) {
                Console.WriteLine(b.Title);
            }
        }
    }
}
5
задан BoltClock 25 October 2011 в 17:53
поделиться