我有一个场景,我需要在一个列上排序,该列是我的 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 提供程序是 MySQL 而不是 MS SQL。事实上,我只是在 MS SQL 中的复制数据库上尝试了相同的查询,并且查询工作正常,即国家名称的排序正确,所以看起来我除了从 MySQL 获取结果集并执行命令之外别无选择从可枚举对象的内存中