// Needed for NET30 #if !NET_4_6 using System; using System.Collections.Generic; using LinqInternal.Core; namespace LinqInternal.Collections.Specialized { [System.Diagnostics.DebuggerNonUserCode] internal sealed class ConditionalExtendedEnumerable : ExtendedEnumerableBase, IEnumerable { private readonly Func _enumerateAppend; private readonly Func _enumerateTarget; public ConditionalExtendedEnumerable(IEnumerable target, IEnumerable append, Func enumerateTarget, Func enumerateAppend) : base(target, append) { if (enumerateTarget == null) { throw new ArgumentNullException("enumerateTarget"); } _enumerateTarget = enumerateTarget; _enumerateAppend = enumerateAppend ?? (null == append ? FuncHelper.GetFallacyFunc() : FuncHelper.GetTautologyFunc()); } public override IEnumerator GetEnumerator() { if (_enumerateTarget.Invoke()) { foreach (var item in Target) { yield return item; } } if (_enumerateAppend.Invoke()) { foreach (var item in Append) { yield return item; } } } } } #endif