2011-11-28 112 views
0

我想列出每门课程的课程和列表学期。无法将类型通用列表隐式转换为类

这里是我的代码

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(); 
    } 

我得到无法隐式转换类型System.Collection.Generic.List<Test.Semester>Test.Semester

有人请纠正我这个代码?

更新

我出口到JSON。所以,它会看起来像这样

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

学期财产的定义看起来如何?这是一个学期或单个实例的列表吗?在后面的情况下,将.ToList()更改为.FirstOrDefault() – NoLifeKing

+0

要更正代码,我们必须首先知道您的意图。你需要一个学期或一个学期的清单吗?更正可以在这里,也可以在财产的定义中。 –

+0

“课程”课程的“学期”属性是什么?这是一个列表吗? –

回答

0

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

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

你可以使用FirstOrDefault() 像

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

如果这是可能的,它在超过1个学期,你需要改变你的学期类型是一个列表。

+0

我有多个学期的每门课程! – HardCode

+0

然后,您需要将您的Semester属性的类型更改为列表。现在,你得到的错误是试图将List设置为对象的单个实例。 – taylonr

+0

给我同样的错误! – HardCode

1

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

0

如果你想获得一个正确的JSON文档与Semester数组,你必须编辑Course -class,使物业SemesterList<Semester>而不是Semester

例子:

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

如果您Course -class样子,你应该能够没有任何变化运行功能的其余部分。

相关问题