5

我正要为数据列表构建一个 DTO。

return from p in db.Students.Find(Id).Courses
       select new CourseDTO
       {
           Id = p.Id,
           CourseName = p.CourseName
       };

但是,当我使用它时,我收到以下错误:

Cannot implicitly convert type 
'System.Collections.Generic.IEnumerable<Storage.Models.CourseDTO>' to 
'System.Collections.Generic.ICollection<Storage.Models.CourseDTO>'. 
An explicit conversion exists (are you missing a cast?)

谁能解释为什么?

4

2 回答 2

7
return (from p in db.Students.Find(Id).Courses
           select new CourseDTO
           {
               Id = p.Id,
               CourseName = p.CourseName

           }).ToList();
于 2013-11-14T23:02:33.667 回答
4

您方法的返回类型是ICollection<T>,但查询返回一个IEnumerable<T>(或一个IQueryable<T>)。很可能您无论如何都不需要ICollection<T>,如果您需要,您希望该集合做什么?它不能用于操作数据库。如果您所做的只是查询数据库,则将方法的返回类型更改为IEnumerable<T>

public IEnumerable<CourseDTO> MyMethod(int Id) 
{
    return from p in db.Students.Find(Id).Courses
           select new CourseDTO
           {
               Id = p.Id,
               CourseName = p.CourseName

           };
}
于 2013-11-14T23:04:04.893 回答