.net 如何使用Linq对对象执行不变量.Contains(myQuery)?

.net 如何使用Linq对对象执行不变量.Contains(myQuery)?,.net,linq,linq-to-objects,.net,Linq,Linq To Objects,我正在尝试使用linq筛选对象列表。当我通过包含(someSearchQuery)进行筛选时,它就像是区分大小写的。。意思是我错过了一些结果 我有一个IList,它有许多属性,但有一个是公共字符串MyText{get;set;} 现在,我试图返回一个Foo的IQueryable,其中MyText属性包含搜索查询——但如果这是一个Sql语句,则可能是 WHERE MyText,如“%searchQuery%”您询问的是字符串。包含方法,而不是LINQ String.Contains不支持不区分大

我正在尝试使用linq筛选对象列表。当我通过
包含(someSearchQuery)
进行筛选时,它就像是区分大小写的。。意思是我错过了一些结果


我有一个
IList
,它有许多属性,但有一个是
公共字符串MyText{get;set;}

现在,我试图返回一个Foo的IQueryable,其中MyText属性包含
搜索查询
——但如果这是一个Sql语句,则可能是


WHERE MyText,如“%searchQuery%”
您询问的是
字符串。包含
方法,而不是LINQ

String.Contains
不支持不区分大小写的搜索。相反,您应该调用
IndexOf
,如下所示:

var query = from q in myFooList
     .Where(x => x.MyText.IndexOf(searchQuery, StringComparison.OrdinalIgnoreCase) >= 0);

请注意,由于您使用的是LINQ to对象,您(可能)不需要
AsQueryable

您询问的是
字符串.Contains
方法,而不是LINQ

String.Contains
不支持不区分大小写的搜索。相反,您应该调用
IndexOf
,如下所示:

var query = from q in myFooList
     .Where(x => x.MyText.IndexOf(searchQuery, StringComparison.OrdinalIgnoreCase) >= 0);

请注意,由于您正在使用LINQ访问对象,您(大概)不需要在searchQuery和MyText上都使用
AsQueryable

ToUpper/ToLower即可实现此目的。@klausbyskov最初我也想到了这一点。。是的。那确实有效。。但这感觉好像是不对的/闻起来不对或什么的……搜索查询和我的文本上的ToUpper/ToLower会起作用。@klausbyskov最初我也想到了这一点。。是的。那确实有效。。但我觉得这是不对的/闻起来不对或是什么的…那家伙!这工作得很好:)出于兴趣,这对LINQtoSQL/实体也适用吗?我不知道,但我怀疑不适用!这很好:)出于兴趣,这是否也适用于LINQtoSQL/实体?我不知道,但我怀疑不会。