c# - 尝试使用 IQueryable 自定义 OrderBy - "Skip"方法错误

标签 c# linq sql-order-by skip

我的代码的第一部分获取 IQueryable 数据结果:

var issues = repository.GetAllIssues().Where(i => 
                  i.IssueNotificationRecipients.Any(r => r.Status == "Open"));

然后我确定用户请求的排序顺序,并添加它:

switch (sort)
{
case 1:
    issues.OrderBy(x => x.Customer);
    break;
case 2:
    issues.OrderBy(x => x.Description);
    break;
case 3:
    issues.OrderBy(x => x.CreatedBy);
    break;
default:
    issues.OrderBy(x => x.DueDateTime);
    break;
}

这会引发错误:

The method 'Skip' is only supported for sorted input in LINQ to Entities. The method 'OrderBy' must be called before the method 'Skip'

那么我如何动态添加 OrderBy 以响应用户的输入?

最佳答案

你的意思是

switch (sort)
{
case 1:
    issues = issues.OrderBy(x => x.Customer);
    break;
case 2:
    issues = issues.OrderBy(x => x.Description);
    break;
case 3:
    issues = issues.OrderBy(x => x.CreatedBy);
    break;
default:
    issues = issues.OrderBy(x => x.DueDateTime);
    break;
}

您可能需要更改 issues 的类型,或将其设置为新变量,因为它返回 IOrderedQueryable<T>

关于c# - 尝试使用 IQueryable 自定义 OrderBy - "Skip"方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5021768/

相关文章:

sql - 如何在 Oracle 中格式化和排序日期?

Javascript - 对 2 参数对象的数组进行排序

c# - 使用 Xamarin MediaManager 流式传输音频

c# - 从 GitHub 进行持续部署在 Azure 中失败(ASP.NET 5 和 MVC 6)

c# - 使用 AJAX 从列表返回属性

c# - 将项目分成一批数字以获取 csv

c# - 从 Excel 返回数据列表

c# - 使用 LINQ 将类的字段复制到字典列表中

sql-server-2005 - ORDER BY 和 WITH(ROWLOCK、UPDLOCK、READPAST)

c# - 工厂模式应该放在 DDD 中的什么位置?