Guest User

Untitled

a guest
May 26th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. public static class EnumerableExtensions
  2. {
  3. public static IPartitionedEnumerable<T> Partition<T>(this IEnumerable<T> source, Func<T, bool> selector)
  4. => new IPartitionedEnumerable<T>(source, selector);
  5. }
  6.  
  7. public class IPartitionedEnumerable<T> : IEnumerable<T>
  8. {
  9. private Func<T, bool> _selector;
  10. private IEnumerable<T> _source;
  11.  
  12. public IEnumerable<T> TrueValues { get; private set; }
  13. public IEnumerable<T> FalseValues { get; private set; }
  14.  
  15. public IPartitionedEnumerable(IEnumerable<T> source, Func<T, bool> selector)
  16. {
  17. _source = source;
  18. _selector = selector;
  19.  
  20. TrueValues = source.Where(selector);
  21. FalseValues = source.Where(d => !selector(d));
  22. }
  23.  
  24. public void Deconstruct(out IEnumerable<T> trueValues, out IEnumerable<T> falseValues)
  25. {
  26. trueValues = TrueValues;
  27. falseValues = FalseValues;
  28. }
  29.  
  30. public IEnumerator<T> GetEnumerator() => _source.GetEnumerator();
  31. IEnumerator IEnumerable.GetEnumerator() => _source.GetEnumerator();
  32. }
Add Comment
Please, Sign In to add comment