/// <summary> /// Returns a Chemical Group containing the set intersection of 'a' and 'b'. /// </summary> public static ChemicalGroup Inersection(ChemicalGroup a, ChemicalGroup b) { SetCheck(a, b); var atomicNumbers = new HashSet <int>(a.Select(chem => { return(chem.AtomicNumber); })); atomicNumbers.IntersectWith(b.Select(chem => { return(chem.AtomicNumber); })); ChemicalGroup result = new ChemicalGroup(a.Factory); foreach (var atomicNumber in atomicNumbers.ToArray()) { result.AddChemicalElement(atomicNumber); } return(result); }