Я пытаюсь объединить две простые коллекции с помощью mongoDbDriver linq, но у меня возникла странная проблема при попытке выполнить результирующий запрос.Я попытался повторить запрос, используя обычный Linq, поэтому все выполнялось в памяти, и у меня не было никаких проблем.Внутри конструктора PresenceSearchElement я ничего не делаю, поэтому здесь нет пустых исключений.
var userCollection = DbContext.GetCollection<User>();
var presenceCollection = DbContext.GetCollection<Presence>();
var fb = new FilterDefinitionBuilder<Presence>();
var presencesList = presenceCollection.Find(fb.Empty).ToList();
var fb2 = new FilterDefinitionBuilder<User>();
var userList = userCollection.Find(fb2.Empty).ToList();
//Memory query execution
var linqRes = presencesList.Join(
userList,
presence => presence.UserId,
user => user.Id,
(presence, user) => new PresenceSearchElement(presence, user)).ToList();
//mongodB query construction
var mongoDbJoinQuery = presenceCollection.AsQueryable()
.Join(
userCollection.AsQueryable(),
presence => presence.UserId,
user => user.Id,
(presence, user) => new PresenceSearchElement(presence, user));
var mongoDbRes = await mongoDbJoinQuery.ToListAsync();
А вот и трассировка стека, которую я получаю при выполнении последней строки кода выше, получая «System.NullReferenceException».".
at MongoDB.Driver.Linq.Processors.Pipeline.MethodCallBinders.JoinBinder.Bind(PipelineExpression pipeline, PipelineBindingContext bindingContext, MethodCallExpression node, IEnumerable`1 arguments)
at MongoDB.Driver.Linq.Processors.MethodInfoMethodCallBinder`1.Bind(PipelineExpression pipeline, TBindingContext bindingContext, MethodCallExpression node, IEnumerable`1 arguments)
at MongoDB.Driver.Linq.Processors.PipelineBinderBase`1.BindMethodCall(MethodCallExpression node)
at ....
Я не уверен, что у меня ошибка в драйвере, или я просто делаю что-то не так.