Как правило, вам нужно иметь главный IENumerable, который находится вне вашей рекурсивной функции, а затем в вашей рекурсивной функции (псевдо-код)
private void flattenList(IEnumerable<T> list)
{
foreach (T item in list)
{
masterList.Add(item);
if (item.Count > 0)
{
this.flattenList(item);
}
}
}
Хотя я действительно не уверен, что вы подразумеваете под IEnumerable, вложенным в IEnumerable ... что внутри этого? Сколько уровней вложенности? Какой окончательный тип? очевидно, мой код неверен, но я надеюсь, что это заставит вас задуматься.