2017-12-27 906 views
0

我不明白爲什麼我從linq查詢返回總是不正確的。Linq查詢返回錯誤

[HttpGet] 
    public List<Programs> GetPrograms() 
    { 
     using (var context = new ProgramsDataContext1()) 
     { 

      var qry = (from a in context.Programs 

         join b in context.courselist on a.Prog_id equals(b.prog_id) 
         where a.Prog_id ==b.prog_id 
         orderby a.Programname 
         select new 
         { Prog_id =a.Prog_id,Programname=a.Programname, programlevel=a.programlevel, planname=a.planname, catalogNo=b.catalogNO, coursetitle=b.coursetitle, subject=b.subject 
         } 
        ).ToList(); 


      return qry ; 
     } 

    } 

它總是在qry上有一個紅色下劃線。這裏有什麼問題?謝謝。

+0

如何定義類程序? select不會創建程序的實例,但會創建匿名對象實例,最終的ToList無法匹配您的返回'List ' – Steve

+0

程序是一個表類。 – user788448

回答

1

由於您已經在進行連接,因此不需要where子句。你的返回類型也不一樣,這就是你得到的錯誤。您現在正在返回一個anonymous對象的列表,而不是Programs

+0

我試圖從程序和courselist表中返回列。如何返回正確的類型?提前致謝。 – user788448

+0

@ user788448,你需要創建一個新的poco/dto來返回你需要的所有數據,然後發送一個'List '回來。在你的查詢中,你在'select'中創建'new dto {}' –

0

只需定義一個只列出您需要的兩個類的屬性的類,而不是創建一個匿名對象來創建此類的實例。

public class ProgramsCourseDto 
{ 
    public int Prog_id {get;set;} 
    public string Programname {get;set;} 
    public int programlevel {get;set;} 
    public string planname {get;set;} 
    public int catalogNo {get;set;} 
    public string coursetitle {get;set;} 
    public string subject {get;set;} 
} 

[HttpGet] 
public List<ProgramsCourseDto> GetProgramsCourses() 
{ 
    using (var context = new ProgramsDataContext1()) 
    { 

     var qry = (from a in context.Programs 
        join b in context.courselist on a.Prog_id equals(b.prog_id) 
        orderby a.Programname 
        select new ProgramsCourseDto 
        { 
         Prog_id =a.Prog_id, 
         Programname=a.Programname, 
         programlevel=a.programlevel, 
         planname=a.planname, 
         catalogNo=b.catalogNO, 
         coursetitle=b.coursetitle, 
         subject=b.subject 
        }).ToList(); 
     return qry ; 
    } 
} 
+0

非常感謝!創建一個新的ProgramsCourseDto類來解決我的程序。 – user788448