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:如果您願意,您也可以使用Tuple或KeyValuePair - 這樣更容易閱讀 –
對,這樣更容易閱讀。儘管在答案中有一個輕微的錯字,那就是新增了匿名類型。 –