为什么字符串IndexOf()表示不敏感?

use*_*210 5 c# linq string indexof linq-to-sql

我真的被这个难倒了.我正在学习LINQ并使用Microsoft Visual C#Express Edition连接到包含有关我的书籍信息的SQL Server数据库.我根据需要创建了LINQ to SQL类.那东西显然有效.这一切都有效,除了我无法弄清楚为什么,如果我搜索"SR"(大写),它会找到两个记录,"SR-71 Revealed,The Inside Story",如预期的那样,但它也发现"褪色太阳:Kesrith"其中"sr"是小写的.我正在使用字符串类的IndexOf()方法,它应该执行case-SENSITIVE比较,对吧?输出显示第二个书名,如上所示,"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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Oyb*_*bek 10

在最后一步,您的查询将转换为sql.在SQL服务器字符串中,字段(varchar,nvarchar)是case insensetive.因此, select * from tbl where col like '%foo%'如果值为Foo或将检索FOo

  • @ user1013210或者您将数据库的`collat​​ion`更改为区分大小写的类型.http://msdn.microsoft.com/en-us/library/ms144260.aspx (4认同)