C# 获取错误CS0029无法转换匿名类型

C# 获取错误CS0029无法转换匿名类型,c#,entity-framework,C#,Entity Framework,我不熟悉C#和实体框架。有人能告诉我这个问题的答案吗? 无法返回查询 public IQueryable<Routing_Tool_Init_SP> GetInit_SP(int id) { #region InitItemJoin var query = (from rt in _context.Set<Routing_Tool>() join rp in

我不熟悉C#和实体框架。有人能告诉我这个问题的答案吗? 无法返回查询

 public IQueryable<Routing_Tool_Init_SP> GetInit_SP(int id)
        {
            #region InitItemJoin
            var query = (from rt in _context.Set<Routing_Tool>()
                         join rp in _context.Set<Routing_Tool_Prioritization_Matrix>()
                             on rt.Id equals rp.RoutingToolId into grouping
                         from rp in grouping.DefaultIfEmpty()
                         select new { rt, rp }).FirstOrDefault();

            return query;
        }
public IQueryable GetInit_SP(int-id)
{
#区域初始化项联接
var query=(来自_context.Set()中的rt)
在_context.Set()中加入rp
在rt.Id等于rp.RoutingToolId的情况下进行分组
来自分组中的rp.DefaultIfEmpty()
选择新的{rt,rp});
返回查询;
}

看起来您的方法返回了某些内容的IQueryable。但是,由于您使用.FirstOrDefault()访问查询,因此您将立即执行查询,并仅检索Routing_Tool(或默认)的单个实体,而不可查询。检查var的显式类型以获得更清晰的信息


返回整个查询而不执行它。让调用者在需要查询的时间和方式执行查询。

使该方法工作的最终解决方案:

public Routing_Tool GetItemsInitById(int id)
        {
            var initPage = _context.Routing_Tool
                .Include(pub => pub.Routing_Tool_Prioritization_Matrices)
                .Where(rt => rt.Id == id)
                .FirstOrDefault();

            return initPage;
        }

那么,您希望如何将一个匿名类型
new{rt,rp}
转换为
Routing_Tool_Init_SP
?我在网上遵循微软的指示。这是可行的:public Routing_Tool GetItemsInitById(int id){return context.Routing_Tool.FirstOrDefault(p=>p.id==id);}谢谢你让我走上正确的道路。没有一个完整的解决方案,因为我不知道如何在这个问题上提出更好的问题。但是正确的道路!