我正在使用:
我正在执行以下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 {
};
执行此操作时,会抛出以下异常:
类型'System.Collections.Generic.IEnumerable`1 [TableB]'的表达式不能用于方法'System.Linq.IQueryable`1的'System.Linq.IQueryable`1 [TableB]'类型的参数&lt;&gt; f__AnonymousType2`2 [TableB,System.Collections.Generic.IEnumerable`1 [TableC]]] GroupJoin [Assembly,Pcba,String,&lt;&gt; f__AnonymousType2`2](System.Linq.IQueryable`1 [TableB] ],System.Collections.Generic.IEnumerable`1 [TableC],System.Linq.Expressions.Expression`1 [System.Func`2 [TableB,System.String]],System.Linq.Expressions.Expression`1 [System .Func`2 [TableC,System.String]],System.Linq.Expressions.Expression`1 [System.Func`3 [TableB,System.Collections.Generic.IEnumerable`1 [TableC],&lt;&gt; f__AnonymousType2` 2 [表B,System.Collections.Generic.IEnumerable`1 [表C]]]])” 参数名称:arg0
我的查询有问题吗?也许MongoDB驱动程序不支持我的查询?
答案 0 :(得分:1)
MongoDb驱动程序does support GroupJoin
,但它似乎并不支持GroupJoin
一组匿名类型。幸运的是,您的查询可以在GroupJoin
s:
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,因此我无法尝试此查询的结果(我通常会这样做)。请试一试。