EF モデル内のユーザー エンティティのナビゲーション プロパティである列で注文する必要があるシナリオがあります。
エンティティ: ユーザー --> 国 1:n の関係
単純な SQL クエリは次のようになります。
SELECT UserId, u.Name, c.Name
FROM users u join countries c on u.CountryId = c.CountryId
ORDER BY c.Name asc;
それで、次のようにLinq to Entitiesを使用して上記のSQLクエリを複製しようとしました-(遅延読み込みが有効になっています)
entities.users.OrderBy(field => field.country.Name).ToList();
しかし、このクエリは、上記のネイティブ SQL クエリのように国名でソートされた国を返しません。
ただし、もう少し続けて、次のことを行いました。
var enumeratedUsers = entities.users.AsEnumerable();
users = enumeratedUsers.OrderBy(fields => fields.country.Name).ToList();
しかし、enumeratedUser オブジェクトで約 50 レコードの順序付けを行うには、約 50 分かかりました。7秒
Enumerable を省略し、匿名型を返さずに行うより良い方法はありますか?
ありがとう
編集
EF プロバイダーは MS SQL ではなく MySQL であることを忘れていました。実際、MS SQL のレプリケートされたデータベースで同じクエリを試したところ、クエリは正常に機能しました。つまり、国名が正しく順序付けられているため、MySQL から結果セットを取得して順序を実行する以外に選択肢がないように見えます。列挙可能なオブジェクトのメモリから