Сразу оговорюсь: IEnumerable как бесплатное приложение к IList меня вполне устраивает.
Разница в том, что в случае с реальным енумератором можно не дожидатья окончания загрузки данных с сервера.
Т.е. классический пример распихивания деталей по заказам будет выглядеть так:
using (IEnumerator<Detail> details = Map.DataReaderToEnumerable<Detail>(readerDetail).GetEnumerator())
if (details.MoveNext())
{
foreach (Order order in Map.DataReaderToEnumerable<Order>(readerOrder))
{
while (details.Current.OrderId == order.Id)
{
order.Details.Add(details.Current);
if (!details.MoveNext())
{
break;
}
}
}
}
У нас в проекте есть пара мест, где клиенту приходит с сервера многомерный массив float'ов (c дырками), в виде
index1, index2, .... indexN, value
index1, index2, .... indexN, value
Который раскладывается в реальный массив, т.е. данные получаемые с сервера ну совсем не похожи на те,
что используются внутри программы. Вот тут IEnumerable очень к месту — получили IDataReader с сервера,
поматросили и сразу бросили.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>