首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LINQ等价于带有数字的文本字段的SQL

LINQ等价于带有数字的文本字段的SQL
EN

Stack Overflow用户
提问于 2021-08-27 08:24:07
回答 2查看 318关注 0票数 0

短版

我希望搜索字符串数据类型,以查找"1000000“和"1009999”之间的所有数字,并且需要对LINQ查询进行SQL优化。

更长版本

我看到了许多用于"Contains()“、"StartsWith()”和"EndsWith()“的帖子,但是没有一个数字比较的帖子。

我想要的是相当于SQL like '100____'的内容,但它必须是所有的数字,因此是like '100[0-9][0-9][0-9][0-9]'。(数据类型是字符串,可以包含非数字数据。)

什么是LINQ等效的,也是SQL优化的,以验证字符串值仅仅是数字?

我尝试了.Where(p => p.Value >= "1000000" && p.Value < "1010000"),但是不接受字符串上的比较(这会给出编译错误)。

这必须与.NET核心兼容,因此.NET框架解决方案(如SqlMethods.Like()SqlFunctions.IsNumeric() )已经过时。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-27 10:48:12

这个成功了。

代码语言:javascript
复制
.Where(p => EF.Functions.Like(p.Value, "100[0-9][0-9][0-9][0-9]"))

感谢所有在评论中的建议!

票数 0
EN

Stack Overflow用户

发布于 2021-08-27 11:07:48

可以在Like类中使用EF.Functions方法。

.Where(x => EF.Functions.Like(p.Value, SearchQuery + "%"));

%将匹配SearchQuery值之后的任何值。

你可以做这样的事情:

.Where(x => EF.Functions.Like(p.Value, "%" + SearchQuery + "%"));

.Where(x => EF.Functions.Like(p.Value, "%" SearchQuery));

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68950238

复制
相关文章

相似问题

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