首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用实体框架dbcontext对单个属性的每个字符串执行'StartsWith‘搜索

如何使用实体框架dbcontext对单个属性的每个字符串执行'StartsWith‘搜索
EN

Stack Overflow用户
提问于 2016-06-16 05:22:48
回答 3查看 417关注 0票数 0

嘿,我正在尝试使用c#实体框架来查询我的数据库,但是我被一些逻辑所困扰。

例如,假设我们正在数据库中搜索一个地名,搜索的名称是"shenandoah national park“。

如果我输入“国家”或“公园”--我想让“谢南多国家公园”出现在我的搜索结果中。

下面的代码将只匹配地名的第一个字符串。

如果我输入“国家”,我将不会得到任何结果。有人能帮我处理一下逻辑吗?我对实体框架的语法不是很熟悉。谢谢!

代码语言:javascript
复制
   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)

EN

回答 3

Stack Overflow用户

发布于 2016-06-16 05:27:08

只需添加单词前面有空格的大小写:

代码语言:javascript
复制
List<Space> lsSpace = dbPOEntity.Spaces
                                .Where(sp => sp.Name.StartsWith(word) 
                                          || sp.Name.Contains(" "+word)
                                .OrderBy(sp => sp.Name)
                                .ToList();

请注意,查询将需要全表扫描,因为您不能创建查找任意子字符串的索引。如果字符串以字符串开头,但不包含,则可以使用In index。

票数 1
EN

Stack Overflow用户

发布于 2016-06-16 05:29:32

你不希望它以单词开头,你希望它包含单词。

代码语言:javascript
复制
List<Space> lsSpace = dbPOEntity.Spaces
    .Where(sp => sp.Name.Contains(word))
    .OrderBy(sp => sp.Name)
    .ToList();
票数 1
EN

Stack Overflow用户

发布于 2016-06-16 05:32:20

为您的提交进行了编辑。试试看。

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37846013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档