Посмотрим, смогу ли я ответить на этот вопрос.
Таким образом, List реализует IEnumerable, и не T, который должен его реализовывать, все в списке может быть повторено, например, с помощью forech или for. Если вы используете общий список, такой как List, это означает, что у вас есть список T, где T - это определенный вами тип объекта, это означает, что вам не нужно его приводить, но с другой стороны вы можете только поместить объекты того же типа в этом списке.
Код, который у вас есть, может означать ряд вещей:
1 - любая переменная, которая реализует IEnumerable, сможет содержать результат GetArticle,
Пример:
List yourList = GetArticle("test");
Queue myQueue = GetArticle("test");
2 - фактическая обработка запроса будет отложена. Если вы вызываете Count, например, после вызова метода, то когда он фактически выполняется / разрешается.
3 - Из-за номера 2, если вы делаете это на БД, как предполагает код, то ваше соединение должно оставаться открытым до того момента, пока вы не воспользуетесь списком, в противном случае вы получите исключение.
Мне кажется, я ответил на вопросы.