LINQ to Entities no reconoce el método ‘Int32 Int32 (System.String)’, y este método no se puede traducir a una expresión de tienda

Estoy tratando de consultar el contexto de la base de datos utilizando Linq para Entidades y estoy recibiendo este error:

INQ to Entities no reconoce el método ‘Int32 Int32 (System.String)’, y este método no se puede traducir a una expresión de tienda.

Código:

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

Intenté así después de ver esto

 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(); } 

Pero arroja un error:

“El nombre ‘o’ no existe en el contexto actual”

Este es mi código para la clase 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 }); } 

También puede recuperar el valor como una cadena (como aparentemente se almacena) y luego convertirlo después.

El error de ‘o’ estar fuera del contexto es que solo declaras o en la consulta de Linq y solo se puede referenciar en ese ámbito.

Si no desea materializar la consulta (recuperar los datos) puede usar cast (ie (int) o.CourseId). Se convierte a la instrucción SQL CAST AS.

La conversión explícita es simple y funciona: (int) o.CourseID

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