我正在使用:
我正在执行以下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,因此无法尝试查询的结果(通常我会这样做)。请试一试。