C# 无法创建类型为…+的常量值跨上下文连接?

C# 无法创建类型为…+的常量值跨上下文连接?,c#,linq,C#,Linq,我需要进行一次跨上下文查询,结果完全迷路了。我有一个airport和一个plane实体类,它们的上下文不同。所有机场都有一个Id,飞机都有一个机场Id外键,这表明他们要去哪里。我的问题是如何找到飞机最多的最繁忙的机场 我进行了两次查询,以使跨上下文连接起作用。我不知道这是否起作用。在消除上下文错误后,我得到了一个新错误:无法创建“Planes.Data.Plane”类型的常量值。我花了很多时间来寻找解决方案。在我找到的某个地方。可以计算,但它与错误无关。我非常感谢任何帮助,我完全陷入困境和困惑。

我需要进行一次跨上下文查询,结果完全迷路了。我有一个airport和一个plane实体类,它们的上下文不同。所有机场都有一个Id,飞机都有一个机场Id外键,这表明他们要去哪里。我的问题是如何找到飞机最多的最繁忙的机场

我进行了两次查询,以使跨上下文连接起作用。我不知道这是否起作用。在消除上下文错误后,我得到了一个新错误:无法创建“Planes.Data.Plane”类型的常量值。我花了很多时间来寻找解决方案。在我找到的某个地方。可以计算,但它与错误无关。我非常感谢任何帮助,我完全陷入困境和困惑。我以前从未使用过lambda linq,这不是必需的,但这是插入.AsEnumerable的唯一方法

        public IList<PlanesPerAirport> GetBusiestAirports()
           {
        var q = (from ap in this.planeRepo.GetAll()
                 select ap).ToList();

        var q2 = this.airportRepo.GetAll().
                  Join(q,
                  x => x.Id,
                  y => y.Airport_Id,
                  (x, y) => new {
                      AirportId = x.Id,
                      PlaneId = y.Airport_Id,
                  }).AsEnumerable().
                  GroupBy(z => z.AirportId).
                  //OrderBy(z => z.Count). -ERROR- the type arguments for method IEnumerable.OrderBy<TSource, TKey>(IEnumenrable<TSource>, Func<TSource, TKey>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
                  Select(z =>
                  new PlanesPerAirport
                  {
                      Id = z.Key,
                      //Count = z.Count, -ERROR- cannot convert method group 'Count' to non-delegate type 'int'
                  });

        return q2.ToList();  // -ERROR- "unable to create a constant value of type 'Planes.Data.Plane' Only primitive types or enumeration types are supported in this context
    }

public class PlanesPerAirport
{
    public int Id { get; set; }

    public int Count { get; set; }
}
试试这个:


var q2 = this.airportRepo.GetAll().
                  Join(q,
                  x => x.Id,
                  y => y.Airport_Id,
                  (x, y) => new {
                      AirportId = x.Id,
                      PlaneId = y.Airport_Id,
                  })
                  .GroupBy(z => z.AirportId, (x,y)=> new PlanesPerAirport
                  {
                      Id = x,
                      Count = y.Count()
                  }) 
                  .OrderBy(z => z.Count);



你能添加错误文本吗?我做任何事情都是为了帮助…为了摆脱无法创建常量值的异常…,q应该是一个平面id值列表,而不是平面。然后在第二个查询中使用Contains。另外,为什么这些实体在不同的上下文中?它们在不同的数据库中吗?如果它们不在不同的数据库中,您可以通过不使用不同的上下文来避免很多麻烦。实际上,您应该在发布之前尝试一下。然后,如果它有效,那么你可以把它作为答案而不是建议发布。试试这个答案并不是很有价值。带有解释的工作代码是.Ty vm。它实际上是按照阿诺德的建议工作的。我不敢相信我在过去的3个小时内把这段代码崩溃了100次,现在运行起来了:这个特定的答案有用吗?我不认为是这样。@Gert Arnold你能解释一下为什么你认为这个代码不起作用吗?@RomaRuzich因为这个异常是由Joinq引起的。。。。