2011-11-28 3 views
0

Je souhaite répertorier les cours et les semestres pour chaque cours.Impossible de convertir implicitement le type Liste générique en classe

Voici mon code

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

Je reçois Impossible de convertir implicitement le type System.Collection.Generic.List<Test.Semester>-Test.Semester

Quelqu'un peut-il s'il vous plaît corriger ce code pour moi?

Mise à jour

Je suis à l'exportation JSON. Ainsi, il ressemblera à ceci

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

A quoi ressemble la définition de la propriété Semester? Est-ce une liste de Semester ou une instance unique? Dans le dernier cas, remplacez .ToList() par .FirstOrDefault() – NoLifeKing

+0

Pour corriger le code, nous devons d'abord connaître votre intention. Avez-vous besoin d'une liste de semestres ou d'un semestre? La correction pourrait être ici ou il pourrait être dans la définition de la propriété. –

+0

Quelle est la propriété 'Semester' de la classe' Course'? Est-ce un 'List '? –

Répondre

0

Dépend de ce que vous essayez de faire. Si elle n'aurait qu'un seul semestre, au lieu de

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

Vous pouvez utiliser FirstOrDefault() comme

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

S'il est possible que ce soit dans plus de 1 semestre, vous devrez changer votre type de semestre est une liste.

+0

J'ai plusieurs semestres pour chaque cours! – HardCode

+0

Ensuite, vous devez modifier le type de votre propriété Semester pour en faire une liste. À l'heure actuelle, l'erreur que vous obtenez consiste à définir une liste sur une seule instance d'un objet. – taylonr

+0

Me donne la même erreur! – HardCode

1

Vous n'avez pas montré le code mais je pense que votre Semester propriété est de type Test.Semester où il doit être de type List<Semester> (ou mieux IList<Semester>).

0

Si vous voulez obtenir un bon JSON-document avec un tableau de Semester que vous aurez à modifier le Course -class, de sorte que la propriété est un SemesterList<Semester> au lieu de Semester.

Exemple:

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

Si votre Course -class ressemble à ça, vous devriez être en mesure d'exécuter le reste de votre fonction, sans aucune modification.

Questions connexes