首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LINQ to Entities无法识别方法“Int32 Parse(System.String)”方法,并且此方法无法转换为存储表达式

LINQ to Entities无法识别方法“Int32 Parse(System.String)”方法,并且此方法无法转换为存储表达式
EN

Stack Overflow用户
提问于 2014-04-22 12:42:24
回答 3查看 44.1K关注 0票数 12

我使用的是Entity Framework,我有一行代码,它接受一个变量并将其转换回数据库的iint。

代码语言:javascript
运行
复制
var record = context.enrollments.SingleOrDefault
  (row => row.userId == int.Parse(UserID) && row.classId == int.Parse(ClassID));

每当我尝试运行它时,我都会收到错误消息。"LINQ to Entities无法识别方法'Int32 Parse(System.String)‘方法,并且此方法无法转换为存储表达式。“

我也试过这个

代码语言:javascript
运行
复制
 var record = context.enrollments.FirstOrDefault
  (row => row.userId == Convert.ToInt32(UserID) 
  && row.classId == Convert.ToInt32(ClassID));

我收到的所有错误消息都是这样的:"LINQ to Entities无法识别方法'Int32 ToInt32(System.String)‘方法,并且此方法无法转换为存储表达式

最后,我也尝试了这种方法,我知道这是不寻常的,但它在过去的类似情况下也是有效的。

代码语言:javascript
运行
复制
var record = context.enrollments.SingleOrDefault
  (row => row.userId == CommonDLL.Sanitize<int>.ConvertType(UserID) 
  && row.classId == CommonDLL.Sanitize<int>.ConvertType(ClassID));

其中我得到了这个错误。正如你所看到的,我已经尝试了几种不同的方法,但都不起作用,所以任何帮助都是很好的。

EN

Stack Overflow用户

发布于 2016-08-12 13:29:11

这对我来说很有效:

代码语言:javascript
运行
复制
  var iId = int.Parse(TextBox1.Text);
 var item = db.Items.Where(p => p.ItemID == iId ).FirstOrDefault();

要做到这一点,您应该在lambda表达式之外转换文本框值。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23210526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档