Я надеюсь, что кто-то может мне помочь:
Я использую интерфейс для доступа к своим данным, метод Find:
public IQueryable<T> Find<T>(Expression<Func<T, bool>> expression) where T : class, new()
{
return (IQueryable<T>) _db.GetCollection<T>(typeof(T).Name, WriteConcern.Acknowledged).AsQueryable().Where(expression);
}
Я пытаюсь построить выражение для получения всех ObjectId в списке ObjectId.
что-то вроде: r => r.id.ContainsAny(List_Of_IDs); //где List_Of_IDs имеет тип: Список
Я также пробовал: r => r.id.ContainsAny(new[] {id1, id2, id3}) //где id1, id2, id3 имеют тип ObjectId
Но я получаю сообщение об ошибке, что ContainsAny не поддерживает этот параметр.
Я надеялся дублировать функциональность оператора IN в SQL. Моя цель состоит в том, что я хочу, чтобы пользовательская коллекция содержала список продуктов в виде списка ObjectId, а затем я хочу запросить коллекцию продуктов и получить все документы в пользовательском списке идентификаторов продуктов.
Это возможно? Кто-нибудь знает, что я делаю неправильно?
Большое спасибо за любую помощь! Стив
Кстати: здесь я отправляю выражение в метод репозитория:
public static List<product> getByIDlist(List<ObjectId> IDs)
{
return (List<product>)repo.Find<product>(r => r.id.ContainsAny(IDs));
}