我目前正在构建一个处理IEnumerable<TSource>
. 对于源集合中的每个项目,我需要产生一个或两个结果类型的项目。
这是我的第一种方法,但失败了,因为该方法被留在第一个 return 语句上,并且在第二个 return 语句被命中时忘记了它的状态。
public static IEnumerable<TResult> DoSomething<TSource>(this IEnumerable<TSource> source)
where TResult : new()
{
foreach(item in source)
{
if (item.SomeSpecialCondition)
{
yield return new TResult();
}
yield return new TResult();
}
}
我将如何正确实施这种情况?