c# - 为 n 个关键字和 AND/OR 选项实现 Linq 搜索查询

标签 c# .net linq

我有一个将自由文本作为搜索输入的文本框,并且我有一个 LINQ 查询,我想用这种类型的搜索进行扩展。

输入可能类似于 “big blue car”,这应该会导致查询搜索包含所有这些词的标题。

还有一个选项可以切换到“任何词”而不是“所有词”。

将此添加到我的 LINQ 查询的最佳/最简单方法是什么?

查询现在看起来像

from b in books
where b.InStore == true && b.Price > 10 && title.Contains()...at this point i want to add the text search. 
select b

最佳答案

我强烈建议您使用两个查询来完成!

但是看看这个,是不是很酷?

var searchAll = true;
var words = List<string>{"big", "blue", "car"};

from b in books
where (...) (searchAll && words.All(x => title.contains(x))) ||
            (!searchAll && words.Any(x => title.Contains(x)))
select b

但你真的应该用两个不同的查询来完成。

关于c# - 为 n 个关键字和 AND/OR 选项实现 Linq 搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158464/

相关文章:

c# - 模拟实现接口(interface)的枚举的行为

c# - 与 WPF 的数据绑定(bind)

c# - 创建一个可以像 XNamespace 类一样实例化的类

c# - 在 C# 中注册

c# - 如何将 double[] 转换为 System.Windows.Media.DoubleCollection?

c# - 无法加载文件或程序集 'video.player.net.dll' 或其依赖项之一。找不到指定的模块 .":"video.player.net.dll

c# - 使用Linq过滤掉特定元素内容

.net - 如何在动态 linq 查询中使用 "contains"或 "like"?

C# 匿名类型 foreach 循环,更好的方法吗?

c# - WPF 复合控件