1
가이 코드는 아무 문제가 없지만 정신 운동으로 나는이 수정 :선택
public static IEnumerable<T> FiltersInnerWhere<T>(this IEnumerable<T> outer, IEnumerable<T> inner, Predicate<T> outerFilter)
{
IEnumerator<T> outerEnumerator = outer.GetEnumerator();
IEnumerator<T> innerEnumerator = inner.GetEnumerator();
while (outerEnumerator.MoveNext() && innerEnumerator.MoveNext())
{
if (outerFilter(outerEnumerator.Current))
yield return innerEnumerator.Current;
}
}
이 함께 결국 :
public static IEnumerable<T> FilteredMerge<T>(this IEnumerable<T> outer, IEnumerable<T> inner, Func<T, bool> outerFilter)
{
var outerEnumerator = outer.GetEnumerator();
var filtered = inner.Where(_ => outerEnumerator.MoveNext() && outerFilter(outerEnumerator.Current));
return filtered;
}
을
코드의 첫 번째 열거자를 직접 잡아 내지 않아도됩니까?
F # 답변도 좋을 것입니다.
아, 항상 익명 유형을 잊어 버립니다. 시원한. 훌륭합니다. –
@Ritch : 튜플 또는 KeyValuePair를 원할 경우 사용할 수도 있습니다. - 읽기가 더 쉽습니다. –
바로 읽기가 훨씬 쉽습니다. 익명 유형을 처음 접하는 곳에서는 답변에 약간의 오타가 있습니다. –