短版
我希望搜索字符串数据类型,以查找"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() )已经过时。
发布于 2021-08-27 10:48:12
这个成功了。
.Where(p => EF.Functions.Like(p.Value, "100[0-9][0-9][0-9][0-9]"))感谢所有在评论中的建议!
发布于 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));
https://stackoverflow.com/questions/68950238
复制相似问题