C # объединить возврат доходности нескольких функций - PullRequest
0 голосов
/ 16 февраля 2019

c # yield compute будет задерживать выполнение каждой итерации цикла только в том случае, если этот конкретный перечисляемый элемент действительно нужен вызывающей стороне.Можно ли объединить несколько таких функций возврата и при этом выставить динамически перечисляемый набор конечному вызывающему объекту?

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
}

1 Ответ

0 голосов
/ 16 февраля 2019

Результаты операции LINQ оцениваются лениво, поэтому вы можете просто:

public IEnumerable<string> GetResults()
{
    return GetDelayedCompute1().Concat(GetDelayedCompute2());
}

Результаты фактически не материализуются, пока вы не перечислите результат GetResults().

...