質問: dbContext.Messages .TakeLast(5) .ToList(); ``` 私はこのエラーを受け取ります: スローされる例外:Remotion.Linq.dllの「System.NotSupportedException」 System.NotSupportedException:式 'value(Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1 [PropWorx.API.Models.Message])。TakeLast(__ p_0)'を解析できませんでした:メソッド 'System.Linq.Queryableのこのオーバーロード.TakeLast 'は現在サポートされていません。 Ling関数「Take」は機能しますが、「TakeLast」は機能しません。これはMySqlの制限ですか?またはポメロ?回避策はありますか? ありがとう
回答: 各プロバイダーは、特定のプラットフォームで動作するLINQ式変換の実装を担当します。はい、Pomeloは`TakeLast`サポートを提供していない`TakeLast`です。 回避策に関する限り、2つのことがあります。まず、order by句なしで`Skip` / `Take`を使用しないで`Take` 。デフォルトの順序は主キーになりますが、キーのタイプによっては、ほぼ完全にランダムになる可能性があります。順序を明示する方が常に良いので、結果から何が得られているかを*正確に*理解できます。 次に、注文があると仮定して、 `TakeLast`機能を取得するには、単に注文を逆にして、代わりに`Take`を使用するだけです。たとえば、作成日までにメッセージをプルすると仮定します。 ``` var messages = dbContext.Messages.OrderBy(o => o.Created).TakeLast(5).ToList(); ``` ここで実際に言っているのは、最新の作成日を持つものが欲しいので、代わりにできることです: ``` var messages = dbContext.Messages.OrderByDescending(o => o.Created).Take(5).ToList(); ``` 同じ結果を達成するため。