Browse Source

Added ReplaceOne extension.

pull/301/head
Halil ibrahim Kalkan 8 years ago
parent
commit
ea7945b75a
  1. 37
      src/Volo.Abp.Core/System/Collections/Generic/AbpListExtensions.cs
  2. 42
      test/Volo.Abp.Core.Tests/System/Collections/Generic/AbpListExtensions_Tests.cs

37
src/Volo.Abp.Core/System/Collections/Generic/AbpListExtensions.cs

@ -80,6 +80,43 @@ namespace System.Collections.Generic
}
}
public static void ReplaceOne<T>(this IList<T> source, Predicate<T> selector, T item)
{
for (int i = 0; i < source.Count; i++)
{
if (selector(source[i]))
{
source[i] = item;
return;
}
}
}
public static void ReplaceOne<T>(this IList<T> source, Predicate<T> selector, Func<T, T> itemFactory)
{
for (int i = 0; i < source.Count; i++)
{
var item = source[i];
if (selector(item))
{
source[i] = itemFactory(item);
return;
}
}
}
public static void ReplaceOne<T>(this IList<T> source, T item, T replaceWith)
{
for (int i = 0; i < source.Count; i++)
{
if (Comparer<T>.Default.Compare(source[i], item) == 0)
{
source[i] = replaceWith;
return;
}
}
}
public static void MoveItem<T>(this List<T> source, Predicate<T> selector, int targetIndex)
{
if (!targetIndex.IsBetween(0, source.Count - 1))

42
test/Volo.Abp.Core.Tests/System/Collections/Generic/AbpListExtensions_Tests.cs

@ -71,10 +71,6 @@ namespace System.Collections.Generic
{
var list = Enumerable.Range(1, 3).ToList();
list[0].ShouldBe(1);
list[1].ShouldBe(2);
list[2].ShouldBe(3);
list.ReplaceWhile(i => i >= 2, 42);
list[0].ShouldBe(1);
@ -87,15 +83,47 @@ namespace System.Collections.Generic
{
var list = Enumerable.Range(1, 3).ToList();
list.ReplaceWhile(i => i >= 2, i => i + 1);
list[0].ShouldBe(1);
list[1].ShouldBe(2);
list[1].ShouldBe(3);
list[2].ShouldBe(4);
}
[Fact]
public void ReplaceOne_WithValue()
{
var list = Enumerable.Range(1, 3).ToList();
list.ReplaceOne(i => i >= 2, 42);
list[0].ShouldBe(1);
list[1].ShouldBe(42);
list[2].ShouldBe(3);
}
list.ReplaceWhile(i => i >= 2, i => i + 1);
[Fact]
public void ReplaceOne_WithFactory()
{
var list = Enumerable.Range(1, 3).ToList();
list.ReplaceOne(i => i >= 2, i => i + 1);
list[0].ShouldBe(1);
list[1].ShouldBe(3);
list[2].ShouldBe(4);
list[2].ShouldBe(3);
}
[Fact]
public void ReplaceOne_With_Item()
{
var list = Enumerable.Range(1, 3).ToList();
list.ReplaceOne(2, 42);
list[0].ShouldBe(1);
list[1].ShouldBe(42);
list[2].ShouldBe(3);
}
}
}

Loading…
Cancel
Save