实体框架核心3.1如何按另一个表中的字段排序

问题描述

我有两个表,例如:

仅用于说明目的。我没有在这里列出所有代码。时间很长。

Employee
    EmployeeID
    OpenID
    JoinDate

OAuth
    OpenID
    Name

我希望我的查询希望按名称 JoinDate 进行排序取决于用户希望排序的列。这是我通常的做法:

var qry = from q in db.Employee select q;

switch (sortField)
{
    case "JoinDate": qry = from q in qry orderby q.JoinDate select q; break;
    case "Name": qry = from q in qry orderby q.OAuth.Name select q; break;
}

Employee和OAuth之间的关系是一对一的。当我们按 JoinDate 排序时,它可以查询。但是,如果选项为名称,则无法将两个表连接起来并对其正确排序。

错误消息是:

OrderBy(t => t.OAuth.Name)' could not be translated. Either rewrite the query in a form that can be translated,or switch to client evaluation explicitly by inserting a call to either AsEnumerable(),AsAsyncEnumerable(),ToList(),or ToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.

Source = Microsoft.EntityFrameworkCore

如果我没记错的话,我们应该可以在linq2sql中做到这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)