У меня есть две коллекции, которые можно смоделировать с помощью этих классов (упрощенная версия):
public class Profile
{
[BsonId]
[BsonRepresentation(BsonType.String)]
public Guid? Id { get; set; }
public string Name { get; set; }
[BsonRepresentation(BsonType.String)]
public Guid UserId { get; set; }
}
public class User
{
[BsonId]
[BsonRepresentation(BsonType.String)]
public Guid? Id { get; set; }
public string UserName { get; set; }
public bool IsConfirmed { get; set; }
}
Мне нужен запрос, чтобы получить все UserProfiles
, у которых User
имеет флаг IsConfirmed
, равныйtrue, а затем мне нужно отфильтровать те, чей Id включен в список исключенных Id:
IList<Guid> profileIdsToExclude
Это запрос, который я построил до сих пор:
var professionalProfilesQuery =
(from profileCollection in _mongoContext.Database.GetCollection<Profile>("profiles").AsQueryable()
join userCollection in _mongoContext.Database.GetCollection<User>("users").AsQueryable()
on profileCollection.UserId equals userCollection.Id.Value
into users
orderby profileCollection.Name
select new ProfessionalProfile
{
Id = profileCollection.Id,
Name = profileCollection.Name,
UserId = profileCollection.UserId,
IsConfirmed = users.First().IsConfirmed,
})
.Where(p => p.IsConfirmed && !profileIdsToExclude.Contains(p.Id.Value));
Где ProfessionalProfile
- это класс для возврата результата запроса:
public class ProfessionalProfile
{
public Guid? Id { get; set; }
public string Name { get; set; }
public Guid UserId { get; set; }
public bool IsConfirmed { get; set; }
}
Я получаю UserProfiles, только те, у которых IsConfirmed
равно true.Но те, чей Id находится в списке исключенных Id, не отфильтровываются и возвращаются запросом.
Есть идеи, возможно ли то, что я хочу сделать, и как?
Заранее спасибо.