簡體   English   中英

LINQ to Entities 無法識別方法 'Int32 Int32(System.String)' 方法,並且此方法無法轉換為存儲表達式

[英]LINQ to Entities does not recognize the method 'Int32 Int32(System.String)' method, and this method cannot be translated into a store expression

我正在嘗試使用 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();
}

看到這個后我試過這樣

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類的GetCourseName

namespace IronwoodWeb
{
    public class CourseNames
    {
        public int CourseID { get; set; }
        public string CourseName { get; set; }
    }
}
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
                  });
}

如果您不想具體化查詢(檢索數據),您可以使用強制轉換(即 (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,
                 };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM