public void TestEqualsEachInRandomOrder() { var enum1 = new[] { 1, 2, 3, 4, }; Assert.AreEqual(true, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 2, 3, 4, })); Assert.AreEqual(true, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 3, 2, 4 })); Assert.AreEqual(false, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 2, 3 })); Assert.AreEqual(false, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 2, 3, 4, 5, })); Assert.AreEqual(false, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 3, 2 })); Assert.AreEqual(false, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 3, 2, 4, 5, })); }
/// <summary> /// enumerableからfuncでIComparableを取得し,それが最小の要素を返す. /// </summary> public static T FindMin <T, S>(this IEnumerable <T> enumerable, Func <T, S> func) where S : IComparable { Contract.Requires(!IEnumerableUtil.IsNullOrEmpty(enumerable)); var ret = enumerable.First(); var value = func(ret); foreach (var elem in enumerable) { S v = func(elem); if (v.CompareTo(value) < 0) { value = v; ret = elem; } } return(ret); }