У меня 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# поддерживает множество парадигм программирования, включая процедурное, объектно-ориентированное и функциональное программирование.
Вы можете попробовать что-то вроде этого:
var result = contractsList.Where(x=>x.ListOpAss.Any(y=>y.ID == 7)).ToList();
В основном мы фильтруем списки, используя метод Где и передавая туда предикат. В этом случае предикат должен основываться на проверке наличия операции в соответствующем списке каждого контракта. Для этого мы используем метод Any.
Метод Любой возвращает значение true, если переданный нами предикат имеет значение true. В этом случае мы требуем проверить, есть ли Operation
в ListOsAss
, у которого ID
равен 7.