嘿,我正在尝试使用c#实体框架来查询我的数据库,但是我被一些逻辑所困扰。
例如,假设我们正在数据库中搜索一个地名,搜索的名称是"shenandoah national park“。
如果我输入“国家”或“公园”--我想让“谢南多国家公园”出现在我的搜索结果中。
下面的代码将只匹配地名的第一个字符串。
如果我输入“国家”,我将不会得到任何结果。有人能帮我处理一下逻辑吗?我对实体框架的语法不是很熟悉。谢谢!
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();编辑:例如,只想要结果-她nat par (any或all)
发布于 2016-06-16 05:27:08
只需添加单词前面有空格的大小写:
List<Space> lsSpace = dbPOEntity.Spaces
.Where(sp => sp.Name.StartsWith(word)
|| sp.Name.Contains(" "+word)
.OrderBy(sp => sp.Name)
.ToList();请注意,查询将需要全表扫描,因为您不能创建查找任意子字符串的索引。如果字符串以字符串开头,但不包含,则可以使用In index。
发布于 2016-06-16 05:29:32
你不希望它以单词开头,你希望它包含单词。
List<Space> lsSpace = dbPOEntity.Spaces
.Where(sp => sp.Name.Contains(word))
.OrderBy(sp => sp.Name)
.ToList();发布于 2016-06-16 05:32:20
为您的提交进行了编辑。试试看。
Entities dbPOEntity = new Entities(); //Entities is an auto generated class that extends dbContext
List<Space> lsSpace = dbPOEntity.Spaces
.Where(sp => sp.Name.Contains(word+" ")
||sp.Name.Contains(" "+word)).OrderBy(sp => sp.Name).ToList();https://stackoverflow.com/questions/37846013
复制相似问题