[英]LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression
[英]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.