2016-11-13 13 views
1

私はLinqと4つのテーブルを結合する必要があります。それは私にこのエラーが表示さ:暗黙のうちに 'System.Collections.Generic.List asp mvcに変換できません

エラー1は、暗黙的に 'System.Collections.Generic.List' Eに型 'System.Collections.Generic.Listを<>' に変換できません:\ MyProjectと\ GoKhoda \ GoKhoda \エリア

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

なぜ私は、エラー表示:\クラス\ StudentsFunc.cs 20 20 GoKhoda

が、これは私のコードですか?どうすればこの問題を解決できますか?ただobject以外に変換することcan't whch匿名型を作成します

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 { ... }

+0

例外は、私たちがあなたに伝えることができるほど少ないとは言いません。 –

答えて

1

匿名型は、LINQクエリの戻り値型であるという問題があります。この匿名型は、select new {}文で指定された名前と型に基づいてコンパイラによって定義されます。

それを修正するには、新しいタイプの学生

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

を定義し、LINQのselect文にしてShowAllStudents方法

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

はこれを使用してください。

単に脇に:学生であり、エンティティが格納されているテーブルではありません。

0

の代わりに匿名の戻り値の型として、学生のタイプを使用することができますオブジェクトはselectでモデルクラスを使用します。その後List<object>の代わりにList<StudentModel>を返すことができます。

関連する問題