示例#1
0
 public static void AddUnique <T>(this ICollection <T> list, IEnumerable <T> items)
 {
     foreach (var item in items)
     {
         list.AddUnique(item);
     }
 }
示例#2
0
        public static ICollection <T> AddRange <T>(
            [NotNull] this ICollection <T> collection,
            [NotNull] IEnumerable <T> other,
            bool checkUnicity = false)
        {
            Check.NotNull(collection)
            .NotNull(other);

            if (checkUnicity)
            {
                foreach (var item in other)
                {
                    collection.AddUnique(item);
                }
            }
            else
            {
                foreach (var item in other)
                {
                    collection.Add(item);
                }
            }

            return(collection);
        }
示例#3
0
 /// <summary>
 /// 添加唯一项
 /// </summary>
 /// <example>
 /// <code>
 /// IList&lt;string> list2 = new List&lt;string>();
 /// list2.AddUnique&lt;string>("test1");
 /// list.AddUnique&lt;string>(list2);
 /// </code>
 /// </example>
 /// <typeparam name="T">类型</typeparam>
 /// <param name="collection">ICollection扩展</param>
 /// <param name="values">值</param>
 /// <returns>true/false</returns>
 public static ICollection <T> AddUnique <T>(this ICollection <T> collection, IEnumerable <T> values)
 {
     foreach (var value in values)
     {
         collection.AddUnique <T>(value);
     }
     return(collection);
 }
示例#4
0
        /// <summary> Adds specified items to the collection, if the collection doesn't already contain such items.
        /// </summary>
        /// <typeparam name="T">The type of the elements of the collections.</typeparam>
        /// <param name="collection">The collection to add to.</param>
        /// <param name="items">The elements to add.</param>
        public static void AddUnique <T>([NotNull] this ICollection <T> collection, [NotNull] IEnumerable <T> items)
        {
            Check.NotNull(collection);

            foreach (var item in items)
            {
                collection.AddUnique(item);
            }
        }
示例#5
0
        public static ICollection <string> AddUnique(this ICollection <string> collection, params string[] items)
        {
            foreach (var item in items)
            {
                collection.AddUnique(item);
            }

            return(collection);
        }
示例#6
0
 public static ICollection <T>?AddUniqueRange <T>(this ICollection <T>?extension, ICollection <T>?collection)
 {
     if (extension is ICollection <T> && collection is ICollection <T> )
     {
         foreach (T item in collection)
         {
             extension.AddUnique(item);
         }
     }
     return(extension);
 }
示例#7
0
        /// <summary>
        /// Adds the passed items to the enumerable.
        /// </summary>
        /// <typeparam name="T">The type of item to add.</typeparam>
        /// <param name="enumerable">The enumerable to add it to.</param>
        /// <param name="values">The values to add.</param>
        public static void AddRange <T>(this ICollection <T> enumerable, IEnumerable <T> values)
        {
            if (values == null)
            {
                return;
            }

            foreach (var item in values)
            {
                enumerable.AddUnique(item);
            }
        }
示例#8
0
        /// <summary>
        /// 批量添加唯一值,向泛型集合批量添加值(唯一值)
        /// </summary>
        /// <typeparam name="T">泛型</typeparam>
        /// <param name="collection">集合</param>
        /// <param name="values">值(批量)</param>
        /// <returns>返回添加成功数</returns>
        public static int AddRangeUnique <T>(this ICollection <T> collection, IEnumerable <T> values)
        {
            var count = 0;

            foreach (var value in values)
            {
                if (collection.AddUnique(value))
                {
                    count++;
                }
            }
            return(count);
        }
示例#9
0
        private void GetBranchContents(short nodeId, IList <Vector3> vectors, ICollection <Vector3> vertices)
        {
            if (nodeId < 0 || nodeId > nodes.Length)
            {
                return;
            }
            var node = nodes[nodeId];

            if (node.flags == BSPNodeFlags.Flag_Leaf)
            {
                foreach (var index3 in node.TriIndices)
                {
                    vertices.AddUnique(vectors[index3.Index0]);
                    vertices.AddUnique(vectors[index3.Index1]);
                    vertices.AddUnique(vectors[index3.Index2]);
                }
                return;
            }

            GetBranchContents(node.posChild, vectors, vertices);
            GetBranchContents(node.negChild, vectors, vertices);
        }
示例#10
0
        public void GetBranchContents(short nodeId, IList<Vector3> vectors, ICollection<Vector3> vertices)
        {
            if (nodeId < 0 || nodeId > nodes.Length) return;
            var node = nodes[nodeId];

            if (node.flags == BSPNodeFlags.Flag_Leaf)
            {
                foreach (var index3 in node.TriIndices)
                {
                    vertices.AddUnique(vectors[index3.Index0]);
                    vertices.AddUnique(vectors[index3.Index1]);
                    vertices.AddUnique(vectors[index3.Index2]);
                }
                return;
            }

            GetBranchContents(node.posChild, vectors, vertices);
            GetBranchContents(node.negChild, vectors, vertices);
        }
示例#11
0
 /// <summary>
 /// Adds the item in case it's not already present in the list using the default equality comparer.
 /// </summary>
 /// <typeparam name="T">The type of item to add.</typeparam>
 /// <param name="enumerable">The enumerable to add it to.</param>
 /// <param name="value">The value to add.</param>
 public static void AddUnique <T>(this ICollection <T> enumerable, T value)
 {
     enumerable.AddUnique(value, EqualityComparer <T> .Default);
 }