C# 获取错误CS0029无法转换匿名类型
我不熟悉C#和实体框架。有人能告诉我这个问题的答案吗? 无法返回查询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
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);}谢谢你让我走上正确的道路。没有一个完整的解决方案,因为我不知道如何在这个问题上提出更好的问题。但是正确的道路!