yield return
не ваш друг здесь. Блок итератора (который создает yield return
) - это просто синтаксический сахар для создания класса, реализующего IEnumerable
, и пользовательского перечислителя, который реализует конечный автомат. На самом деле это не дает никакого выигрыша в производительности и не обязательно облегчает отложенную загрузку, поскольку генерируемый им код будет столь же синхронным, как и код, который вы в нем пишете.
Я не эксперт по сетке Xceed, поэтому я не могу дать вам ответ, относящийся к этому продукту, но ленивая загрузка действительно может помочь с вашей проблемой (для ее истинного решения вам, вероятно, придется чтобы загрузить как можно меньше данных для отображения, а затем начать преимущественную загрузку предстоящих данных в фоновом потоке, но подробности того, как это сделать, выходят за рамки ответа здесь).
Один из подходов может состоять в том, чтобы синхронно загрузить определенное количество строк (все, что необходимо отобразить в данный момент), а затем загрузить остальные строки либо по мере необходимости (если ваш набор данных большой, а пользователь вряд ли будет выглядеть на всех из них) или в фоновом режиме (если набор невелик или пользователь может просмотреть их все).