Linq查询返回错误

时间:2017-12-27 17:24:17

标签: 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上总是有一个红色下划线。这里有什么问题?感谢。

2 个答案:

答案 0 :(得分:1)

由于您已经在进行连接,因此不需要where子句。你的退货类型也不一样,这就是你得到的错误。您现在正在返回anonymous个对象的列表,而不是Programs

答案 1 :(得分: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 ;
    }
}