检查对象列表是否包含其属性具有特定值的对象

时间:2019-01-28 06:49:27

标签: c# linq

我有一个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;}
}

例如,我想获取所有ID为7的工序的合同清单,有没有办法使用linq做到这一点?

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

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

基本上,我们通过使用Where方法并向其传递谓词来过滤列表。在这种情况下,谓词应基于检查每个合同的对应列表中是否存在操作。为此,我们使用Any方法。

当我们传递的谓词为true时,Any方法将返回true。在这种情况下,我们需要检查Operation中是否有ListOsAss等于7的ID