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

我正在尝试使用Linq to Entities查询数据库上下文,我收到此错误:

INQ to Entities无法识别方法’Int32 Int32(System.String)’方法,并且此方法无法转换为商店表达式。

码:

public IEnumerable GetCourseName() { var course = from o in entities.UniversityCourses select new CourseNames { CourseID = Convert.ToInt32(o.CourseID), CourseName = o.CourseName, }; return course.ToList(); } 

看到这个之后我就这样试过了

 public IEnumerable 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类的GetCourseName

 namespace IronwoodWeb { public class CourseNames { public int CourseID { get; set; } public string CourseName { get; set; } } } 

 public IEnumerable GetCourseName() { var courses = from o in entities.UniversityCourses select new { o.CourseID, o.CourseName }; return courses.ToList() // now we have in-memory query .Select(c => new CourseNames() { CourseID = Convert.ToInt32(c.CourseID), // OK CourseName = c.CourseName }); } 

如果您不想实现查询(检索数据),您可以使用强制转换(即(int)o.CourseId)。 转换为SQL CAST AS语句。

您还可以将值作为字符串(因为它显然存储)带回来然后转换它。

‘o’在上下文之外的错误是你只在Linq查询中声明o,它只能在该范围内引用。

显式转换很简单,有效:(int)o.CourseID

 var course = from o in entities.UniversityCourses select new CourseNames { CourseID = (int)o.CourseID, CourseName = o.CourseName, };