Я часто сталкиваюсь со случаем, когда хочу проверить запрос именно там, где я его объявляю. Обычно это происходит потому, что мне нужно многократно повторять его, а вычисление обходится дорого. Например:
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()
- безопасно и надежно, зная, что память не будет выделяться дважды?