Не могли бы вы объяснить, почему вывод этих двух функций различен для одних и тех же данных?
Я ожидал, что они будут производить тот же вывод, то есть добавить строки. Как изменить альтернативу 1 для добавления строк?Выражение Linq и foreach производят разные результаты
(Фон Measurements
реализует ICollection<>
)
Альтернативные 1
private void CreateBody(TestRun testRun, StringBuilder lines)
{
testRun.Measurements.OrderBy(m => m.TimeStamp)
.Select(m => lines.AppendLine(string.Format("{0},{1}", m.TestRound, m.Transponder.Epc)));
}
-/добавлены линии> отсутствие выходных
Вариант 2
private void CreateBody2(TestRun testRun, StringBuilder lines)
{
foreach (Measurement m in testRun.Measurements.OrderBy(m => m.TimeStamp))
{
lines.AppendLine(string.Format("{0},{1}", m.TestRound, m.Transponder.Epc));
}
}
-> добавлены линии для каждого измерения
Lazy Evaluation - это термин. [Статья о Lazy vs Eager] (http://blogs.msdn.com/b/ericwhite/archive/2006/10/04/lazy-evaluation-_2800_and-in-contrast_2c00_-eager-evaluation_2900_.aspx) – bland