Каждый поставщик отвечает за реализацию перевода выражений LINQ, который работает для их конкретной платформы. Похоже, да, что Pomelo не предоставил поддержку TakeLast
.
Что касается обходных путей, две вещи. Во-первых, вы никогда не должны использовать Skip
/ Take
без предложения order by. Порядок по умолчанию будет первичным ключом, но в зависимости от типа ключа он может оказаться почти полностью случайным. Всегда лучше четко указать порядок, чтобы вы точно поняли , что берется из результатов.
Во-вторых, если у вас есть порядок, чтобы получить функциональность TakeLast
, вам просто нужно отменить порядок и использовать вместо него Take
. Например, предположим, что вы извлекаете сообщения по дате создания:
var messages = dbContext.Messages.OrderBy(o => o.Created).TakeLast(5).ToList();
Что вы на самом деле говорите, так это то, что вам нужны те, которые имеют самую последнюю дату создания, так что вы можете сделать вместо этого:
var messages = dbContext.Messages.OrderByDescending(o => o.Created).Take(5).ToList();
Для достижения того же результата.