Linq查询返回错误

Linq查询返回错误,linq,Linq,我无法理解为什么我从linq查询返回的结果总是不正确 [HttpGet] public List<Programs> GetPrograms() { using (var context = new ProgramsDataContext1()) { var qry = (from a in context.Programs join b in contex

我无法理解为什么我从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 ;
        }

    }
[HttpGet]
公共列表GetPrograms()
{
使用(var context=newprogramsDataContext1())
{
var qry=(来自context.Programs中的
在a.Prog_id等于(b.Prog_id)的context.courselist中加入b
其中a.Prog_id==b.Prog_id
orderby a.程序名
选择新的
{Prog_id=a.Prog_id,Programname=a.Programname,programlevel=a.programlevel,planname=a.planname,catalogNo=b.catalogNo,coursetitle=b.coursetitle,subject=b.subject
}
).ToList();
返回qry;
}
}

qry上始终有一条红色下划线。这里有什么问题?谢谢。

因为您已经在执行join,所以不需要
where
子句。另外,您的返回类型也不相同,这就是您得到的错误。您现在返回的是
匿名
对象的列表,而不是
程序

只需定义一个只列出两个类中所需属性的类,而不是构建匿名对象,创建该类的实例

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 ;
    }
}
公共类程序
{
public int Prog_id{get;set;}
公共字符串程序名{get;set;}
公共int程序级别{get;set;}
公共字符串planname{get;set;}
public int catalogNo{get;set;}
公共字符串CourseTile{get;set;}
公共字符串主题{get;set;}
}
[HttpGet]
公共列表GetProgramsUsers()
{
使用(var context=newprogramsDataContext1())
{
var qry=(来自context.Programs中的
在a.Prog_id等于(b.Prog_id)的context.courselist中加入b
orderby a.程序名
选择新程序浏览数据以查看
{ 
Prog_id=a.Prog_id,
Programname=a.Programname,
programlevel=a.programlevel,
planname=a.planname,
catalogNo=b.catalogNo,
coursetitle=b.coursetitle,
主语
}).ToList();
返回qry;
}
}

如何定义类程序?select不创建程序实例,但创建匿名对象实例,最终的ToList无法匹配您的返回
列表
程序是一个表类。我正在尝试从Programs和courselist表返回列。如何返回正确的类型?提前感谢。@user788448,您需要创建一个新的poco/dto来返回您需要的所有数据,然后发送一个
列表
。在您的查询中,您可以在
选择中创建
新dto{}
,非常感谢!创建一个新的程序以解决我的程序。