如何使用 Linq to Objects 实现不变的 .Contains(myQuery) ?

发布于 2024-09-26 11:37:43 字数 657 浏览 0 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

〆凄凉。 2024-10-03 11:37:43

您询问的是 string.Contains 方法,而不是 LINQ。

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

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

请注意,由于您使用的是 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 call IndexOf, like this:

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

Note that since you're using LINQ-to-Objects, you (presumably) don't need AsQueryable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文