Проверка наличия в списке объектов объекта, свойство которого имеет определенное значение

У меня List<Contract>.

Каждый контракт имеет ObservableCollection.

class Contract
   {
   private ObservableCollection<Operation> listOpAss;
   public ObservableCollection<Operation> ListOpAss
   {
      get { return listOpAss; }
      set
      {
         if (this.listOpAss != value)
         {
            this.listOpAss = value;
            this.NotifyPropertyChanged("ListOpAss");
         }
      }
   }
   ...
}

class Operation
{
   public long ID{get;set;}
   public long ID{get;set;}
   public long ID{get;set;}
}

Например, я хочу получить список всех контрактов, у которых есть операция с идентификатором = 7, есть ли способ сделать это с помощью linq?

🤔 А знаете ли вы, что...
C# поддерживает множество парадигм программирования, включая процедурное, объектно-ориентированное и функциональное программирование.


75
1

Ответ:

Решено

Вы можете попробовать что-то вроде этого:

var result = contractsList.Where(x=>x.ListOpAss.Any(y=>y.ID == 7)).ToList();

В основном мы фильтруем списки, используя метод Где и передавая туда предикат. В этом случае предикат должен основываться на проверке наличия операции в соответствующем списке каждого контракта. Для этого мы используем метод Any.

Метод Любой возвращает значение true, если переданный нами предикат имеет значение true. В этом случае мы требуем проверить, есть ли Operation в ListOsAss, у которого ID равен 7.