代码之家  ›  专栏  ›  技术社区  ›  Siegfried.V

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

  •  -1
  • Siegfried.V  · 技术社区  · 7 年前

    我有一个 List<Contract> .

    每个合同都有一个“可观察的集合”

    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 回复  |  直到 7 年前
        1
  •  2
  •   Christos    7 年前

    你可以尝试这样的方法:

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

    基本上我们使用 Where 方法,并在其中传递谓词。在这种情况下,谓词应该基于检查每个契约的对应列表中是否存在操作。为此,我们使用任何方法。

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