-1

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);

4

1 に答える 1

0

あなたはこれを使うかもしれません

persons.Select(p => new { Emp = (p.Employee!=null) ? p.Employee.Name : p.Name})
       .OrderBy(p => p.Emp)
       .Take(10);
于 2017-05-11T11:03:11.743 に答える