【发布时间】:2012-05-18 01:37:15
【问题描述】:
我想在 linq 中将字符串转换为 int 到实体,但 Convert.ToInt32 和 int.Parse 无法转换为 sql 而且我的数据库很大,无法将它们全部存储到内存中(超过 60k 记录并且变得更大) 我的查询类似于
int myNumber = 1390;
var result = from dr in myEntitiy.TableX
where (Convert.ToInt32(dr.stringYear) > myNumber) // <== error
select dr;
错误说不能翻译转换方法
LINQ to Entities 无法识别方法“Int32 ToInt32(System.String)”方法,并且该方法无法转换为存储表达式。
解决办法
更新: 如果没有办法做到这一点,请让我确定这一点,然后我必须更改数据库中的字段类型,但这会很难:(
【问题讨论】:
-
为什么要将年份保存为字符串?
-
一个愚蠢的人做了那个:/我现在不能改变它
-
您可以先尝试进行转换吗?将结果存储在列表中,然后进行比较
-
正如我所说的,它是一个大数据库,不能像(.ToList 或 .AsEnumerable)那样执行此操作,而且数据库也在网络上
-
你会用字典吗?当您说数据库在网络上时,您是指云吗?
标签: c# sql-server sql-server-2008 entity-framework linq-to-entities