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