Как правило, вам не нужно оценивать свойства GridItem при итерации по IEnumerable. Вы можете пропустить вычисления, пока они не будут использованы первыми, или оценить свойства лениво (когда они прочитаны).
Я имею в виду, что у вас может быть такая функция, как Calculate (), которая вычисляется после построения, или вы можете выполнять вычисления в получателе свойств / соответствующих функций.
Вы также можете получить количество (общее количество) или записи из источника GridItem (например, базы данных), какой IMO лучше.