不能隐式地将类型泛型列表转换为类

本文关键字:列表 转换 泛型 类型 不能 | 更新日期: 2023-09-27 18:16:03

我想列出课程和每门课程的学期。

这是我的代码

public List<Course> GetAllCourses()
    {
        IList<App> app = App.GetAll();
        List<CInstance> ci = new List<CInstance>();
        for (int i = 0; i < app.Count; i++)
        {
            ci.Add(CInstance.GetInstance(app[i].Id));
        }
        return ci.Select(c => new Course
        {
            CourseId = c.Course.CourseId,
            Semester = ci.Select(s => new Semester
            {
               SemesterId  = c.Course.Semester.SemesterId
            }).ToList()
        }).ToList();
    }

我得到Cannot implicit convert type System.Collection.Generic.List<Test.Semester> to Test.Semester

谁能帮我修改一下这个代码吗?

我导出到JSON。因此,它将看起来像这样

[
- {
   courseId: 123,
   courseName: "someCouse",
   semester:
   - {
      semesterId:26
   },
   - {
      semesterId:27
   }
}
]

不能隐式地将类型泛型列表转换为类

您没有显示代码,但我认为您的Semester属性是类型Test.Semester,它应该是类型List<Semester>(或更好的IList<Semester>)。

这取决于你想做什么。如果它只有一个学期,而不是

 Semester = ci.Select(s => new Semester
            {
               SemesterId  = c.Course.Semester.SemesterId
            }).ToList() 

你可以使用FirstOrDefault()像

 Semester = ci.FirstOrDefault(s => new Semester
            {
               SemesterId  = c.Course.Semester.SemesterId
            })

如果有可能超过一个学期,你需要将你的学期类型更改为列表。

如果你想得到一个正确的json文档与Semester的数组,你必须编辑Course -类,使属性Semester是一个List<Semester>而不是Semester

的例子:

public class Course
{
    public int CourseID { get; set; }
    public string CourseName { get; set; }
    public List<Semester> Semester { get; set; }
}

如果您的Course类看起来像这样,您应该能够运行您的功能的其余部分,而无需任何更改。