2016-11-13 5 views
1

Ich brauche 4 Tabelle mit Linq beizutreten. aber es mir diesen Fehler zeigen:Kann Typ 'System.Collections.Generic.List implizit nicht konvertieren in asp mvc

Fehler 1 kann nicht implizit konvertiert Typ 'System.Collections.Generic.List <>' auf 'System.Collections.Generic.List' E: \ MyProject \ GoKhoda \ GoKhoda \ Areas \ Classes \ StudentsFunc.cs 20 20 GoKhoda

dies ist mein Code:

public List<Tbl_Students> ShowAllStudents() 
    { 
     var qstudent = from s in _db.Tbl_Students 
         join pr in _db.Tbl_Pye_Reshte on s.StudentID equals pr.StudentID 
         join r in _db.Tbl_Reshte on pr.ReshteID equals r.ReshteID 
         join p in _db.Tbl_Paye on pr.PayeID equals p.PayeID 
         orderby p.PayeID descending 
         select new { StudentName = s.StudentName, StudentFamily = s.StudentFamily, StudentImage = s.StudentImage, StudentPayeName = p.PayeName, StudentReshtName = r.ReshteName }; 
     return qstudent.ToList(); 
    } 

Warum Fehler Zeigen Sie mir? Wie kann ich das lösen? diese

+0

Die Ausnahme sagt nicht viel weniger, als wir Ihnen sagen können. –

Antwort

1

Das Problem, dass anonymer Typ ist ein Rückgabetyp von Ihrer LINQ-Abfrage. Dieser anonyme Typ wird vom Compiler basierend auf den Namen und Typen definiert, die in der Anweisung select new {} angegeben sind.

es zu beheben, können Sie einen neuen Typ Studenten

public class Student 
{ 
    public string StudentName { get; set; } 
    public string StudentFamily { get; set; } 
    public byte[] StudentImage { get; set; } 
    public string StudentPayeName { get; set; } 
    public string StudentReshtName { get; set; } 
} 

definieren und dann Schüler Typ in LINQ Select-Anweisung und als Rückgabetyp für die ShowAllStudents Methode

public List<Student> ShowAllStudents() 
{ 
    var qstudent = from s in _db.Tbl_Students 
        join pr in _db.Tbl_Pye_Reshte on s.StudentID equals pr.StudentID 
        join r in _db.Tbl_Reshte on pr.ReshteID equals r.ReshteID 
        join p in _db.Tbl_Paye on pr.PayeID equals p.PayeID 
        orderby p.PayeID descending 
        select new Student { StudentName = s.StudentName, StudentFamily = s.StudentFamily, StudentImage = s.StudentImage, StudentPayeName = p.PayeName, StudentReshtName = r.ReshteName }; 
    return qstudent.ToList(); 
} 
1

Verwendung:

var qstudent = from s in _db.Tbl_Students 
    join pr in _db.Tbl_Pye_Reshte on s.StudentID equals pr.StudentID 
    join r in _db.Tbl_Reshte on pr.ReshteID equals r.ReshteID 
    join p in _db.Tbl_Paye on pr.PayeID equals p.PayeID 
    orderby p.PayeID descending 
    select new Tbl_Students { StudentName = s.StudentName, StudentFamily = s.StudentFamily, StudentImage = s.StudentImage, StudentPayeName = p.PayeName, StudentReshtName = r.ReshteName }; 
return qstudent.ToList(); 

Select new { ... } wird nur einen anonymen Typ erstellen whch zu etwas außer object umgewandelt werden kann nicht.

Nur als Nebenbemerkung: Student, nicht die Tabelle, in der die Entität gespeichert ist.

0

Statt eines anonymen verwenden Objekt verwenden Sie Ihre Modellklasse in select. Dann können Sie List<StudentModel> anstelle von List<object> zurückgeben.

Verwandte Themen