Присоединение к коллекции Mongodb с использованием драйвера c # и LINQ. Ниже приведен список двух релевантных решений
var table1 = _myRepo.GetAll();
var table2 = table1.Where(x => x.Type == "MyType");
var try1 = (from x in table1
join y in table2 on new { a = x.ClaimId, b = x.CensusId } equals
new { a = y.ClaimId, b = y.CensusId }
select x).ToList();
Этот запрос вызовет исключение Оператор запроса соединения не поддерживается.
var try2 = (from x in table1
from y in table2
where x.ClaimId == y.ClaimId &&
x.CensusId == y.CensusId select x
).Select(x => x).ToList();
Этот запрос вызовет исключение Оператор запроса SelectMany не поддерживается
Но ниже работает запрос
var table1 = _arRepository.GetAll();
var table2 = table1.Where(x => x.Type == "MyType");
var claimIds = table2.Select(x => x.ClaimId).Distinct().ToList();
var censusIds = table2.Select(x => x.CensusId).Distinct().ToList();
var data = table1.Where(x => claimIds.Contains(x.ClaimId) && censusIds.Contains(x.CensusId));
Проблема с этим заключается в том, что он загружает (ApplicIds и censusIds) в память, на самом деле яхотите выполнить это на сервере, чтобы он возвращал только необходимые данные. Я также нашел блог для новой функции mongodb (Lookup), который обсуждался в
Блог: https://www.axonize.com/blog/iot-technology/joining-collections-in-mongodb-using-the-c-driver-and-linq/ Я веду блог для установки необходимых драйверов
<PackageReference Include="mongocsharpdriver" Version="2.9.2" />
<PackageReference Include="MongoDB.Bson" Version="2.9.2" />
<PackageReference Include="MongoDB.Driver" Version="2.9.2" />
<PackageReference Include="MongoDB.Driver.Core" Version="2.9.2" />
, но безуспешно