Linq クエリを並べ替えてページングする必要がありますが、次のようなカスタム列を並べ替えて作成する必要があります。私のエンティティ Person が従業員の場合、名前はテーブル Employee から取得され、そうでない場合はテーブル Person から取得されます。そしてこれらは異なります。そのために、このルールを適用して名前を返すフィールドがあるので、名前で並べ替えてからクエリをページングする必要があります。
問題: この方法では、この順序付けとページングを行うためにすべてのテーブル データをロードする必要があります。100.000 行を取得するには、100.000 行のようなものです。10 行を EF にロードする前に、DB でこの順序付け作業を行いたいと考えています。
クエリで「IF」句を使用してオーダーを実装し、DB での作業を残して、10 行のページのみをロードする方法はありますか?
多分このようなもの:
persons.OrderBy(p => (p.Employee != null)? p.Employee.Name : p.Name).Take(10);