不能隐式地将类型泛型列表转换为类
本文关键字:列表 转换 泛型 类型 不能 | 更新日期: 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
类看起来像这样,您应该能够运行您的功能的其余部分,而无需任何更改。