Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static class EnumerableExtensions
- {
- public static IPartitionedEnumerable<T> Partition<T>(this IEnumerable<T> source, Func<T, bool> selector)
- => new IPartitionedEnumerable<T>(source, selector);
- }
- public class IPartitionedEnumerable<T> : IEnumerable<T>
- {
- private Func<T, bool> _selector;
- private IEnumerable<T> _source;
- public IEnumerable<T> TrueValues { get; private set; }
- public IEnumerable<T> FalseValues { get; private set; }
- public IPartitionedEnumerable(IEnumerable<T> source, Func<T, bool> selector)
- {
- _source = source;
- _selector = selector;
- TrueValues = source.Where(selector);
- FalseValues = source.Where(d => !selector(d));
- }
- public void Deconstruct(out IEnumerable<T> trueValues, out IEnumerable<T> falseValues)
- {
- trueValues = TrueValues;
- falseValues = FalseValues;
- }
- public IEnumerator<T> GetEnumerator() => _source.GetEnumerator();
- IEnumerator IEnumerable.GetEnumerator() => _source.GetEnumerator();
- }
Add Comment
Please, Sign In to add comment