我正在尝试使用Linq to Entities查询数据库上下文,我收到此错误:
LINQ to Entities无法识别方法'Int32 Int32(System.String)'方法,并且此方法无法转换为商店表达式 .
码:
public IEnumerable<CourseNames> GetCourseName()
{
var course = from o in entities.UniversityCourses
select new CourseNames
{
CourseID = Convert.ToInt32(o.CourseID),
CourseName = o.CourseName,
};
return course.ToList();
}
看到this后我试过这样的
public IEnumerable<CourseNames> GetCourseName()
{
var temp = Convert.ToInt32(o.CourseID);
var course = from o in entities.UniversityCourses
select new CourseNames
{
CourseID = temp,
CourseName = o.CourseName,
};
return course.ToList();
}
但它抛出一个错误:
“当前上下文中不存在名称'o'”
这是我的类 GetCourseName
的代码
namespace IronwoodWeb
{
public class CourseNames
{
public int CourseID { get; set; }
public string CourseName { get; set; }
}
}
4 回答
您还可以将值作为字符串(因为它显然存储)带回来然后转换它 .
'o'在上下文之外的错误是你只在Linq查询中声明o,它只能在该范围内引用 .
如果您不想实现查询(检索数据),可以使用强制转换(即(int)o.CourseId) . 转换为SQL CAST AS语句 .
显式转换很简单,有效:(int)o.CourseID