我正在使用:

  • Asp.net Core 1.1
  • MongoDB驱动程序2.4.4

  • 我正在执行以下LINQ查询:
            var collection = _db.GetCollection<TableA>("TableAs");
            var collectionTableB = _db.GetCollection<TableB>("TableBs");
            var collectionTableC = _db.GetCollection<TableCs>("TableCs");
    
    
            var query = from c in collection.AsQueryable()
                        join i in (from f in collectionTableB.AsQueryable()
                                   join p in collectionTableC.AsQueryable()
                                        on f.PcbaId equals p.PcbaId into i
                                   from x in i.DefaultIfEmpty()
                                   select new { f, x })
                      on c.AssemblyId equals i.f.AssemblyId into cap
                        from i in cap.DefaultIfEmpty()
                        select new ConfigurableItemDto {
    
                        };
    

    当我执行此操作时,它将引发以下异常:



    我的查询有问题吗?也许MongoDB驱动程序不支持我的查询?

    最佳答案

    MongoDb驱动程序does support GroupJoin ,但似乎不支持带有匿名类型集合的GroupJoin。幸运的是,您的查询可以在GroupJoin之间重写为MongoCollection:

    var query = from a in collection.AsQueryable()
                join b in collectionTableB.AsQueryable()
                    on a.AssemblyId equals b.AssemblyId into bj
                from b in bj.DefaultIfEmpty()
                join c in collectionTableC.AsQueryable()
                    on b.PcbaId equals c.PcbaId into cj
                from c in cj.DefaultIfEmpty()
                select new ConfigurableItemDto {
                     a.SomeAProperty,
                     b.SomeBProperty,
                     c.SomeCProperty,
                };
    

    我没有运行MongoDb,因此无法尝试查询的结果(通常我会这样做)。请试一试。

    10-06 04:40
    查看更多