C# 正在尝试使用IQueryable-“自定义OrderBy”;跳过“;方法错误
代码的第一部分获取IQueryable数据结果:C# 正在尝试使用IQueryable-“自定义OrderBy”;跳过“;方法错误,c#,linq,sql-order-by,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);
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;
}
这将抛出错误:
仅支持“跳过”方法
用于LINQ中已排序的输入到实体。
必须调用方法“OrderBy”
在“跳过”方法之前
那么,如何根据用户的输入动态添加OrderBy呢?您还没有向我们展示您的所有代码,但有一个问题是您预期会出现
问题。OrderBy(…)
会修改问题变量引用的可查询项。但它实际上并没有做到这一点;它返回一个新的IOrderedQueryable
,表示原始queryable的有序版本
因为您的排序操作实际上没有触及被称为问题的变量的可查询项;对它调用Skip
会导致您得到的错误,这是有道理的,因为它实际上还没有被排序
您可能想做:
issues = issues.OrderBy(...);
您尚未向我们显示所有代码,但有一个问题是您希望issues.OrderBy(..)
变异issues
变量引用的可查询项。但它实际上并没有做到这一点;它返回一个新的IOrderedQueryable
,表示原始queryable的有序版本
因为您的排序操作实际上没有触及被称为问题的变量的可查询项;对它调用Skip
会导致您得到的错误,这是有道理的,因为它实际上还没有被排序
您可能想做:
issues = issues.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;
}
您可能需要更改问题的类型
,或者将其设置为新变量,因为它返回IOrderedQueryable
您的意思是什么
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;
}
您可能需要更改问题的类型
,或者将其设置为一个新变量,因为它返回IOrderedQueryable
这个答案是一个救命稻草!我的大多数实体在我的服务类中调用ToList,因为我返回少量记录。我开始使用IQueryable返回较大的集合,但我不明白OrderBy为什么不工作。使用不同的变量返回IOrderedQueryable,它修复了所有问题。谢谢。这个答案真是救命稻草!我的大多数实体在我的服务类中调用ToList,因为我返回少量记录。我开始使用IQueryable返回较大的集合,但我不明白OrderBy为什么不工作。使用不同的变量返回IOrderedQueryable,它修复了所有问题。谢谢