Ключевым моментом здесь является то, что после первой строки кода, где вы создаете запрос для переменной списка, вы еще не вышли в базу данных.Все, что вы сделали, это создали IEnumerable / IQueryable, который знает, как выйти в базу данных и получить ваши данные.Ничего не произойдет, пока вы на самом деле не свяжете его с элементом управления или иным образом не попытаетесь перебрать результаты.
Ваша проблема в том, что когда вы, наконец, связываетесь с первым элементом управления, состояние этого IEnumerable изменяется так, что теперь он указывает на конец набора результатов, а не ожидает открытия базы данных в начале.Когда вы пытаетесь связать второй повторитель, там нет записей.
Самый простой способ исправить это - просто поместить исходные результаты запроса в список, хотя вы должны знать, что это вызовет ваш веб-сервер.загрузить весь набор результатов в оперативную память.Другой вариант - использовать один ретранслятор, упорядочить запрос соответствующим образом и использовать код для вывода желаемого HTML-кода в зависимости от типа строки и дополнительного HTML-кода между разделами.Это будет работать лучше, но пересекает линии между отдельными уровнями.