我正在尝试从集合A中查找未从集合B中的任何文档引用的所有文档。
我找到this answer,但我无法将其翻译为C#。
到目前为止,我已经尝试过这个:
from a in docA.AsQueryable()
join b in docB.AsQueryable() on a.Id equals b.DocARef into bs
from sub_b in bs.DefaultIfEmpty()
where sub_b == null
select new { a.Id, a.Name };
和
from a in docA.AsQueryable()
join b in docB.AsQueryable() on a.Id equals b.DocARef into bs
from sub_b in bs.DefaultIfEmpty()
where !bs.Any()
select new { a.Id, a.Name };
两者都会产生NotSupportedException
:$project or $group does not support {document}.
我做错了什么?
答案 0 :(得分:0)
看起来C#驱动程序在这里没有正确遵循LINQ的约定。
正确的查询如下所示:
var result =
from a in docA.AsQueryable()
join b in docB.AsQueryable() on a.Id equals b.DocARef into bs
where !bs.Any()
select new { a.Id, a.Name };
请注意,没有DefaultIfEmpty
但是联接的行为仍然像左外连接。