如何使用 Linq to Objects 实现不变的 .Contains(myQuery) ?
我正在尝试使用 linq 过滤对象列表。当我按 Contains(someSearchQuery)
进行过滤时,它就像区分大小写......这意味着我错过了一些结果。
我有一个 IList
,它有许多属性,但其中一个是 public string MyText { get;放; ..
现在,我试图返回 Foo 的 IQueryable,其中 MyText 属性包含搜索查询
- 但作为一个 If this was a Sql statements, it would be
< code>WHERE MyText LIKE '%searchQuery%' <-- 有效但效率低下
或
WHERE CONTAINS(MyText, 'searchQuery')
<-- 使用 FTS。
我不知道如何做到这一点,因为当我执行以下查询时,就像在执行区分大小写的
var query = from q in myFooList.AsQueryable().Where(x => x.MyText.Contains (searchQuery));
有建议吗?
I'm trying to filter a list of objects using linq. When i filter by a Contains(someSearchQuery)
it's like it's being case sensitive .. meaning i miss some results.
I have an IList<Foo>
's which has a number of properties, but one is public string MyText { get; set; }
Now, i'm trying to return a IQueryable of Foo's where the MyText property contain the search query
- but as a If this was a Sql statement, it would be either..
WHERE MyText LIKE '%searchQuery%'
<-- Works but inefficent
or
WHERE CONTAINS(MyText, 'searchQuery')
<-- using FTS.
I'm not sure how to do this, because when I do the following query it's like it's doing a case sensitive
var query = from q in myFooList.AsQueryable().Where(x => x.MyText.Contains(searchQuery));
Suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您询问的是
string.Contains
方法,而不是 LINQ。String.Contains
不支持不区分大小写的搜索。相反,您应该调用IndexOf
,如下所示:请注意,由于您使用的是 LINQ-to-Objects,因此您(大概)不需要
AsQueryable
。You're asking about the
string.Contains
method, not about LINQ.String.Contains
does not support case-insensitive searching. Instead, you should callIndexOf
, like this:Note that since you're using LINQ-to-Objects, you (presumably) don't need
AsQueryable
.