Ваша реализация GetFirstItem()
не гарантирует возврата первого элемента, поскольку запрос на выборку может возвращать элементы в любом порядке, в котором он пожелает. Таким образом, вы получите первый результат в случайном списке.
Чтобы ваш метод работал правильно, вам нужно добавить вызов .AddOrder(Order.Asc("<some property>"))
к вашим критериям, где <some property>
может быть идентификатором базы данных или отметкой времени создания.
Чтобы получить последний элемент, добавьте вместо него .AddOrder(Order.Desc("<some property>"))
.
(Кстати, почему вы возвращаете список из метода, который должен получить вам только один элемент?)