我正在尝试将以下 SQL 语句复制为 LINQ to Entities 查询(其中“PRODUCTS”是映射到实体的表)...注意 IQueryable ...我所看到的大多数作为解决方案发布的内容都转换了搜索参数,或者将结果转储到 IEnumerable 中,然后从那里继续转换。我正在处理 100 条数百万条记录,无法将 2 亿条记录加载到内存中,只能再次过滤它们。如果可能的话,我想在对数据库的单个查询中执行此操作。
select *
from PRODUCTS
where
MODEL_CODE = '65' and
CAST(SERIAL_NUMBER as int) > 927000 and
CAST(SERIAL_NUMBER as int) < 928000
我尝试了以下...
int startSN, endSN;
startSN = 9500
endSN = 9500
if (!int.TryParse(startSerialNumber, out startSN))
throw new InvalidCastException("The start serial number was not a valid value");
if (!int.TryParse(endSerialNumber, out endSN))
throw new InvalidCastException("The end serial number was not a valid value");
IQueryable<PRODUCT> resultList = base.Context.PRODUCTS.Where(b =>
(Convert.ToInt32(b.SERIAL_NUMBER) > startSN) &&
(Convert.ToInt32(b.SERIAL_NUMBER) < endSN)).AsQueryable();
我已经尝试了与此类似的其他几个版本,但没有运气。我也没有运气看过以下帖子。
在实体框架 linq 查询中将字符串转换为 int 并处理解析异常- 该解决方案在转换实体属性之前将查询转换为列表。
在 LINQ to Entities 中将字符串转换为 Int ?- 这个问题只是转换了可以在 LINQ to Entities 语句之外轻松完成的参数。我已经为参数这样做了。
LINQ to Entities StringConvert(double)' 无法转换为将 int 转换为字符串- 这个问题实际上与我的相反,试图将 int 转换为字符串。1) SqlFunctions 不提供转换为 int 的函数。2)最终的解决方案是,在转换/转换值之前再次转换为 IEnumerable。
有人有其他想法吗?我对这个有点难过!
谢谢你,G