【发布时间】:2016-10-17 04:37:54
【问题描述】:
嘿,我正在尝试使用 c# 实体框架查询我的数据库,但我对某些逻辑感到困惑。
例如,假设我们正在数据库中搜索一个地名,我们正在搜索的名称是“雪兰多国家公园”
如果我输入“国家”或“公园”——我希望“雪兰多国家公园”出现在我的搜索结果中。
下面的代码只会匹配地名的第一个字符串。
如果我输入“国家”,我不会得到任何结果。有人可以帮我解释一下逻辑吗,我对实体框架语法并不熟悉。谢谢!
Entities dbPOEntity = new Entities(); //Entities is an auto generated class that extends dbContext
List<Space> lsSpace = dbPOEntity.Spaces.Where(sp => sp.Name.StartsWith(word)).OrderBy(sp => sp.Name).ToList();
编辑:例如只想要 --- she nat par (any or all) 的结果
【问题讨论】:
-
使用
.Contains而不是.StartsWith -
我认为您需要将其映射为 SQL 函数
-
你输入了什么
"andoah"?你想让它匹配"shenandoah national park"吗? -
@DStanley 不,我们只会得到她 nat par (any or all) 的结果
-
我知道这并不能直接解决问题,但是在这样的数据库中实现全文搜索并不是很有效。像 ElasticSearch (Lucene) 这样的专用搜索引擎更适合于此。我提到这一点是因为我自己吸取了教训,并希望有人给我这个建议。另一种选择是将文本字符串解析为标记并将各个标记存储在单独的表中。也许我对你的问题读得太多了,我的建议并不适用。如果是这样,请继续,忘记你曾经读过这篇文章。
标签: c# entity-framework search dbcontext