我们现在正在构建的其中一件事是寻找人的搜索功能。
从简单开始,我们使用 Linq to 实体进行搜索,如下所示:Entities.People.Where(z=>z.Birthdate < birthdate).ToList()
然后,当添加新的 searchcriteria 时,linq 语句不断增长,现在我们必须重构它,因为没有人再理解它了。
此时,我们必须方便搜索 8 个相关项,例如“你在这里工作吗”、“你会说这种语言吗”、“从这 6 项技能中,你掌握了哪些”等。
所有这些项目都是 SqlServer 中的 1:N 或 N:N 关系,我们正在搜索多个项目,我们想知道你有“多少匹配”。
例如:我们寻找说法语和/或英语和/或德语的人,我们希望得到所有至少有 1 个匹配项的人,对于这些人,我们想知道有多少匹配项(即 3 个中的 1 个或2 / 3) 每个人都有。
此时的问题是:做什么是明智的(数据库中大约有 10.000 人)。
头脑风暴使我们有以下选择:
- 在数据库中进行最快的搜索(因此您检索有限数量的记录)并在代码中对其余部分进行排序
- 继续使用 Linq 构建
- 在 SqlServer 中执行整个操作
有什么提示可以帮助我们入门吗?