|
@@ -66,7 +66,7 @@ namespace Invercargill {
|
|
}
|
|
}
|
|
|
|
|
|
public virtual Enumerable<Tout> select_many<Tout>(TransformDelegate<T, Enumerable<Tout>> transform) {
|
|
public virtual Enumerable<Tout> select_many<Tout>(TransformDelegate<T, Enumerable<Tout>> transform) {
|
|
- return new MergeQuery<Tout>(new TransformQuery<T, Enumerable<Tout>>(this, transform));
|
|
|
|
|
|
+ return new MergeQuery<Tout>(select(transform));
|
|
}
|
|
}
|
|
|
|
|
|
public virtual Enumerable<T> sort(CompareDelegate<T> compare) {
|
|
public virtual Enumerable<T> sort(CompareDelegate<T> compare) {
|
|
@@ -101,6 +101,19 @@ namespace Invercargill {
|
|
return to_sequence().pair(other);
|
|
return to_sequence().pair(other);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public virtual Enumerable<T> zip(Enumerable<T> other) {
|
|
|
|
+ return new ZipperEnumerable<T>(this, other);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public virtual Enumerable<Tout> fork<Tout>(TransformDelegate<T, Tout> fork1, TransformDelegate<T, Tout> fork2) {
|
|
|
|
+ var seq = to_sequence();
|
|
|
|
+ return seq.select<Tout>(fork1).zip(seq.select<Tout>(fork2));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public virtual Enumerable<Tout> fork_many<Tout>(TransformDelegate<T, Enumerable<Tout>> fork1, TransformDelegate<T, Enumerable<Tout>> fork2) {
|
|
|
|
+ return new MergeQuery<Tout>(fork(fork1, fork2));
|
|
|
|
+ }
|
|
|
|
+
|
|
public virtual bool matches(Enumerable<T> other, EqualityDelegate<T> equals) {
|
|
public virtual bool matches(Enumerable<T> other, EqualityDelegate<T> equals) {
|
|
return pair(other).all(p => equals(p.value1, p.value2));
|
|
return pair(other).all(p => equals(p.value1, p.value2));
|
|
}
|
|
}
|