c# - 使用 LINQ 进行宽容/模糊搜索

标签 c# linq

我正在尝试对我继承的数据库执行搜索。该要求声明用户必须能够按名称搜索对象。不幸的是,一个对象可能有多个与之关联的名称。例如:

ID    Name
1     John and Jane Doe
2     Foo McFoo
3     Boo McBoo

当每条记录中存在一个名字时,很容易实现搜索:

var objects =  from x in db.Foo
               where x.Name.Contains("Foo McFoo")
               select x;

但是,当存在多个名称时,该方法不起作用。

问题:是否可以编写一个搜索方法,当有人使用搜索词 John Doe 时返回记录一(John 和 Jane Doe)无名氏?

最佳答案

这会影响性能,但是这个快速的怎么样:

string[] filters = "John Doe".Split(new[] {' '});
var objects =  from x in db.Foo
               where filters.All(f => x.Name.Contains(f))
               select x;

它似乎返回了您所期望的。现在,当您还有一张唱片“John Doe”以及“John and Jane Doe”时,您可以将其调整为表现良好。

这对你有用吗?

关于c# - 使用 LINQ 进行宽容/模糊搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13162830/

相关文章:

c# - 检查用户名和密码的类型是用于客户端还是管理员

c# - 如何从基于 IEqualityComparer<T> 的列表中获取对象

c# - 如何在多维数组上使用 LINQ 到 'unwind' 数组?

c# - 如何使用 .NET XmlSerializer 使值类型可为空?

c# - 什么是 Python 的最小值/最大值的 C# 等价物

c# - 使用 Access DB 作为数据源进行 ORM 的最佳方法

c# - 在 foreach/for 中构建 where 子句的延迟查询

c# - 这个 "listMerging"代码可以改进吗?

c# - 将数据库中的字符串与发布的字符串进行比较

c# - Winforms、WebControl、谷歌地图和无效渲染