首页 > 解决方案 > 在 MVC 中,如何从数据库中检索与包含数字的字符串序列号范围匹配的记录?

问题描述

我有一个使用 Code First Entity Framework 的 MVC 应用程序。

我的数据库中有序列号的记录,这些序列号是字符串,以及字母和数字的组合。最后 4 始终是数字部分

我正在尝试检索范围 A 和 B 之间的所有记录,例如从SERIAL-NO-0020SERIAL-NO-0050

我无法将字符串编号部分转换为整数,因为 Linq To Entities 不支持它。因此,作为获取序列号高于 20 的所有记录的示例,这不起作用:

var records = context.SerialNumbers.Where(m => Convert.ToDecimal(m.SerialNo.Substring(10, 4)) > 20).ToList();

有没有办法在不首先从数据库中提取所有记录并进一步过滤的情况下做到这一点?

标签: asp.net-mvcentity-frameworklambda

解决方案


您可以编写 SP 并在 Linq 的帮助下访问此 SP(存储过程),而不是编写查询。在 SP 中,您可以先拆分记录,然后进行比较。它还将花费更少的时间并提高性能。


推荐阅读