首页 文章

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

提问于
浏览
15

我正在尝试使用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 回答

  • 3
    public IEnumerable<CourseNames> 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
                      });
    }
    
  • -1

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

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

  • 3

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

  • 36

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

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

相关问题