【发布时间】:2017-10-21 02:45:39
【问题描述】:
我正在尝试使用 linq 查询,当我尝试以某种方式转换高度值时,我在运行时遇到错误。
错误:
LINQ to Entities 无法识别方法 'Int32 ToInt32(System.String)' 方法,这个方法不能翻译 到商店表达式中。
有没有更好的方法来比较高度值?
case "HeightFrom":
photosquery = photosquery.Where(x => Convert.ToInt32(x.physical.BodyHeight.TrimEnd()) >= Convert.ToInt32(height));
break;
【问题讨论】:
-
有点不相关,但你能保证
BodyHeight和Height将总是 可以转换成int吗?您的异常风险非常高,为什么不在您的模型上创建具有正确错误处理int.TryParse()的int属性,然后只比较新的int属性? -
避免对数据库字段(左侧)进行任何类型的操作。这将始终导致不可分割的查询。
-
Linq-to-Entities 似乎不太支持您尝试执行的操作,请参阅此 SO 答案:stackoverflow.com/a/16694769/4276832