C# 将String.IndexOf转换为SQL不支持带有StringComparison参数的版本

C# 将String.IndexOf转换为SQL不支持带有StringComparison参数的版本,c#,string,linq,linq-to-sql,C#,String,Linq,Linq To Sql,我有以下代码: var items = db.Name.Where(x => x.Forename.IndexOf("john", StringComparison.OrdinalIgnoreCase) >= 0).Take(20); 其中db是一个System.Data.Linq.DataContext 这给了我一个可爱的错误: 将String.IndexOf转换为SQL不支持版本 用一个比较参数 我只想将数据库中的字符串与用户输入的字符串(在上面的示例中硬编码为“john”)进

我有以下代码:

var items = db.Name.Where(x => x.Forename.IndexOf("john", StringComparison.OrdinalIgnoreCase) >= 0).Take(20);
其中
db
是一个
System.Data.Linq.DataContext

这给了我一个可爱的错误:

将String.IndexOf转换为SQL不支持版本 用一个比较参数

我只想将数据库中的字符串与用户输入的字符串(在上面的示例中硬编码为“john”)进行比较,但不考虑大小写敏感度。我根据以下问题编写代码

这可能会有所帮助:

string test="john";
db.tblUsers.Where (u =>u.Forename.ToLower().Contains((test.ToLower())).Take(20);

重复:我猜比较将取决于数据库的排序规则。因此,如果数据库排序规则不区分大小写,那么比较也不会区分大小写。