/// <summary> /// Adds the items in the source collection to the destination /// collection. Does not add an item to the destination if it already exists. /// </summary> /// <param name="source"></param> /// <param name="destination"></param> public static void CopyDistinctTo <T>( this ICollection <T> source, ICollection <T> destination) { foreach (T item in source) { destination.AddDistinct <T>(item); } }
public void AddDistinct() { collection.AddDistinct(1); collection.AddDistinct(2); collection.AddDistinct(2); collection.AddDistinct(3); collection.AddDistinct(5); collection.AddDistinct(4); collection.AddDistinct(4); Assert.Equal(5, collection.Count); Assert.Equal(1, collection.ElementAt(0)); Assert.Equal(2, collection.ElementAt(1)); Assert.Equal(3, collection.ElementAt(2)); Assert.Equal(5, collection.ElementAt(3)); Assert.Equal(4, collection.ElementAt(4)); }
public virtual IEnumerable <TEntity> InsertOrUpdate(IEnumerable <TEntity> entities, TOptions options) { var list = _innerCollection as IList <TEntity>; var inserts = new List <TEntity>(); var updates = new List <TEntity>(); if (list != null) { foreach (var entity in entities) { _innerCollection.Add(entity); OnInsertDetected(entity); } } else { foreach (var entity in entities) { if (_innerCollection.AddDistinct(entity)) { OnInsertDetected(entity); inserts.Add(entity); } else { OnUpdateDetected(entity); updates.Add(entity); } } } if (inserts.Any()) { OnBatchInsertDetected(inserts); } if (updates.Any()) { OnBatchUpdateDetected(updates); } return(entities); }
internal static void FlagSpotAsUsed(Spot spot, ICollection <Guid> spotUidList) { spotUidList.AddDistinct(spot.Uid); }
public static void AddRangeDistinct <T>(this ICollection <T> collection, IEnumerable <T> items, Func <T, T, bool> predicate) { items.ForEach(item => collection.AddDistinct(item, predicate)); }
/// <summary> /// Adds to a collection the items of an <see cref="IEnumerable{T}"/> which are not already in collection using an equlaity comparer. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="collection"></param> /// <param name="items">Items to add</param> /// <param name="comparer">Predicate to use to determine if an item is already in the collection</param> /// <returns>Count of items added</returns> public static int AddRangeDistinct <T>(this ICollection <T> collection, IEnumerable <T> items, Func <T, T, bool> predicate) { return(items.Count(item => collection.AddDistinct(item, predicate))); }