我使用的是Entity Framework,我有一行代码,它接受一个变量并将其转换回数据库的iint。
var record = context.enrollments.SingleOrDefault
(row => row.userId == int.Parse(UserID) && row.classId == int.Parse(ClassID));
每当我尝试运行它时,我都会收到错误消息。"LINQ to Entities无法识别方法'Int32 Parse(System.String)‘方法,并且此方法无法转换为存储表达式。“
我也试过这个
var record = context.enrollments.FirstOrDefault
(row => row.userId == Convert.ToInt32(UserID)
&& row.classId == Convert.ToInt32(ClassID));
我收到的所有错误消息都是这样的:"LINQ to Entities无法识别方法'Int32 ToInt32(System.String)‘方法,并且此方法无法转换为存储表达式
最后,我也尝试了这种方法,我知道这是不寻常的,但它在过去的类似情况下也是有效的。
var record = context.enrollments.SingleOrDefault
(row => row.userId == CommonDLL.Sanitize<int>.ConvertType(UserID)
&& row.classId == CommonDLL.Sanitize<int>.ConvertType(ClassID));
其中我得到了这个错误。正如你所看到的,我已经尝试了几种不同的方法,但都不起作用,所以任何帮助都是很好的。
发布于 2016-08-12 13:29:11
这对我来说很有效:
var iId = int.Parse(TextBox1.Text);
var item = db.Items.Where(p => p.ItemID == iId ).FirstOrDefault();
要做到这一点,您应该在lambda表达式之外转换文本框值。
https://stackoverflow.com/questions/23210526
复制相似问题