|
@@ -21,23 +21,22 @@ namespace System.Linq
|
|
|
|
|
|
async IAsyncEnumerator<TSource> Core(CancellationToken cancellationToken)
|
|
|
{
|
|
|
- await using (var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false))
|
|
|
+ await using var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false);
|
|
|
+
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
{
|
|
|
- while (await e.MoveNextAsync())
|
|
|
+ var element = e.Current;
|
|
|
+
|
|
|
+ if (!predicate(element))
|
|
|
{
|
|
|
- var element = e.Current;
|
|
|
+ yield return element;
|
|
|
|
|
|
- if (!predicate(element))
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
{
|
|
|
- yield return element;
|
|
|
-
|
|
|
- while (await e.MoveNextAsync())
|
|
|
- {
|
|
|
- yield return e.Current;
|
|
|
- }
|
|
|
-
|
|
|
- yield break;
|
|
|
+ yield return e.Current;
|
|
|
}
|
|
|
+
|
|
|
+ yield break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -54,30 +53,28 @@ namespace System.Linq
|
|
|
|
|
|
async IAsyncEnumerator<TSource> Core(CancellationToken cancellationToken)
|
|
|
{
|
|
|
- await using (var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false))
|
|
|
- {
|
|
|
- var index = -1;
|
|
|
+ await using var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false);
|
|
|
+ var index = -1;
|
|
|
|
|
|
- while (await e.MoveNextAsync())
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
+ {
|
|
|
+ checked
|
|
|
{
|
|
|
- checked
|
|
|
- {
|
|
|
- index++;
|
|
|
- }
|
|
|
-
|
|
|
- var element = e.Current;
|
|
|
+ index++;
|
|
|
+ }
|
|
|
|
|
|
- if (!predicate(element, index))
|
|
|
- {
|
|
|
- yield return element;
|
|
|
+ var element = e.Current;
|
|
|
|
|
|
- while (await e.MoveNextAsync())
|
|
|
- {
|
|
|
- yield return e.Current;
|
|
|
- }
|
|
|
+ if (!predicate(element, index))
|
|
|
+ {
|
|
|
+ yield return element;
|
|
|
|
|
|
- yield break;
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
+ {
|
|
|
+ yield return e.Current;
|
|
|
}
|
|
|
+
|
|
|
+ yield break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -94,23 +91,22 @@ namespace System.Linq
|
|
|
|
|
|
async IAsyncEnumerator<TSource> Core(CancellationToken cancellationToken)
|
|
|
{
|
|
|
- await using (var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false))
|
|
|
+ await using var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false);
|
|
|
+
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
{
|
|
|
- while (await e.MoveNextAsync())
|
|
|
+ var element = e.Current;
|
|
|
+
|
|
|
+ if (!await predicate(element).ConfigureAwait(false))
|
|
|
{
|
|
|
- var element = e.Current;
|
|
|
+ yield return element;
|
|
|
|
|
|
- if (!await predicate(element).ConfigureAwait(false))
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
{
|
|
|
- yield return element;
|
|
|
-
|
|
|
- while (await e.MoveNextAsync())
|
|
|
- {
|
|
|
- yield return e.Current;
|
|
|
- }
|
|
|
-
|
|
|
- yield break;
|
|
|
+ yield return e.Current;
|
|
|
}
|
|
|
+
|
|
|
+ yield break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -128,23 +124,22 @@ namespace System.Linq
|
|
|
|
|
|
async IAsyncEnumerator<TSource> Core(CancellationToken cancellationToken)
|
|
|
{
|
|
|
- await using (var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false))
|
|
|
+ await using var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false);
|
|
|
+
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
{
|
|
|
- while (await e.MoveNextAsync())
|
|
|
+ var element = e.Current;
|
|
|
+
|
|
|
+ if (!await predicate(element, cancellationToken).ConfigureAwait(false))
|
|
|
{
|
|
|
- var element = e.Current;
|
|
|
+ yield return element;
|
|
|
|
|
|
- if (!await predicate(element, cancellationToken).ConfigureAwait(false))
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
{
|
|
|
- yield return element;
|
|
|
-
|
|
|
- while (await e.MoveNextAsync())
|
|
|
- {
|
|
|
- yield return e.Current;
|
|
|
- }
|
|
|
-
|
|
|
- yield break;
|
|
|
+ yield return e.Current;
|
|
|
}
|
|
|
+
|
|
|
+ yield break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -162,30 +157,28 @@ namespace System.Linq
|
|
|
|
|
|
async IAsyncEnumerator<TSource> Core(CancellationToken cancellationToken)
|
|
|
{
|
|
|
- await using (var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false))
|
|
|
- {
|
|
|
- var index = -1;
|
|
|
+ await using var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false);
|
|
|
+ var index = -1;
|
|
|
|
|
|
- while (await e.MoveNextAsync())
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
+ {
|
|
|
+ checked
|
|
|
{
|
|
|
- checked
|
|
|
- {
|
|
|
- index++;
|
|
|
- }
|
|
|
-
|
|
|
- var element = e.Current;
|
|
|
+ index++;
|
|
|
+ }
|
|
|
|
|
|
- if (!await predicate(element, index).ConfigureAwait(false))
|
|
|
- {
|
|
|
- yield return element;
|
|
|
+ var element = e.Current;
|
|
|
|
|
|
- while (await e.MoveNextAsync())
|
|
|
- {
|
|
|
- yield return e.Current;
|
|
|
- }
|
|
|
+ if (!await predicate(element, index).ConfigureAwait(false))
|
|
|
+ {
|
|
|
+ yield return element;
|
|
|
|
|
|
- yield break;
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
+ {
|
|
|
+ yield return e.Current;
|
|
|
}
|
|
|
+
|
|
|
+ yield break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -203,30 +196,28 @@ namespace System.Linq
|
|
|
|
|
|
async IAsyncEnumerator<TSource> Core(CancellationToken cancellationToken)
|
|
|
{
|
|
|
- await using (var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false))
|
|
|
- {
|
|
|
- var index = -1;
|
|
|
+ await using var e = source.GetConfiguredAsyncEnumerator(cancellationToken, false);
|
|
|
+ var index = -1;
|
|
|
|
|
|
- while (await e.MoveNextAsync())
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
+ {
|
|
|
+ checked
|
|
|
{
|
|
|
- checked
|
|
|
- {
|
|
|
- index++;
|
|
|
- }
|
|
|
-
|
|
|
- var element = e.Current;
|
|
|
+ index++;
|
|
|
+ }
|
|
|
|
|
|
- if (!await predicate(element, index, cancellationToken).ConfigureAwait(false))
|
|
|
- {
|
|
|
- yield return element;
|
|
|
+ var element = e.Current;
|
|
|
|
|
|
- while (await e.MoveNextAsync())
|
|
|
- {
|
|
|
- yield return e.Current;
|
|
|
- }
|
|
|
+ if (!await predicate(element, index, cancellationToken).ConfigureAwait(false))
|
|
|
+ {
|
|
|
+ yield return element;
|
|
|
|
|
|
- yield break;
|
|
|
+ while (await e.MoveNextAsync())
|
|
|
+ {
|
|
|
+ yield return e.Current;
|
|
|
}
|
|
|
+
|
|
|
+ yield break;
|
|
|
}
|
|
|
}
|
|
|
}
|