Я часто сталкиваюсь со случаем, когда хочу проверить запрос именно там, где я его объявляю. Обычно это происходит потому, что мне нужно многократно повторять его, а вычисление обходится дорого. Например:
string raw = "...";
var lines = (from l in raw.Split('\n')
             let ll = l.Trim()
             where !string.IsNullOrEmpty(ll)
             select ll).ToList();
 Это отлично работает. Но если я не собираюсь изменять результат, я мог бы также вызвать ToArray() вместо ToList().
 Интересно, однако, ToArray() ли ToArray() первым вызовом ToList() и, следовательно, является менее эффективным с точки зрения памяти, чем просто вызов ToList().
 Я сумасшедший? Должен ли я просто вызвать ToArray() - безопасно и надежно, зная, что память не будет выделяться дважды?



