示例#1
0
        /// <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);
        }