我的代码的第一部分获取 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/