public IEnumerable<string> GetDelayedCompute1()
{
// compute ...
foreach(var s in results)
{
yield return s;
}
}
public IEnumerable<string> GetDelayedCompute2()
{
// compute ...
foreach(var s in results)
{
yield return s;
}
}
public IEnumerable<string> GetResults()
{
// how to combine results of GetDelayedCompute1 and GetDelayedCompute2
// and yield return without forcing enumeration
}
答案 0 :(得分:6)
LINQ操作的结果是延迟求值的,因此您可以:
public IEnumerable<string> GetResults()
{
return GetDelayedCompute1().Concat(GetDelayedCompute2());
}
直到您枚举GetResults()
的结果,结果才真正实现。