问题:“方法'Skip'只支持LINQ to Entities中的排序输入。方法'OrderBy'必须在方法'Skip'之前调用。如何按当前订单排列<object>列表,以便PagedList可以接受?
list2 = list1.Where(a).OrderBy(x => x.Something).Union(list1.Where(x).OrderBy(x => x.SomethingDifferent));
return list2.ToPagedList(...);
我假设发生这种情况是因为它需要在'联盟'后添加一个新的'OrderBy'。有没有办法把它变成一个OrderedList,同时保持联盟目前的订单?
有没有办法添加其他排序依据,它实际上并不更改顺序,如:
list2 = list1.Where(a).OrderBy(x => x.Something).Union(list1.Where(x).OrderBy(x => x.SomethingDifferent)).OrderBy(x => x.NothingThatWillAffectTheOrder);
编辑
为了使这更清楚,我将解释用一个实际的例子。
假设用户在电影数据库中进行搜索,并且想在显示包含搜索字符串的演员姓名前显示包含搜索字符串的标题。
list = movies.Where(x => x.Title.Contain...).Union(movies.Where(x => x.Actors.Contain..)
PagedList不会接受这个,因为它没有排序,但是排序这个列表将会失败联盟的目的。是否有一个“解决方法”,使其成为有序列表,同时保持当前的顺序?
我删除了我以前的答案,因为是可行的:但是这取决于你实际上是用它做什么,也许你可以只是像压平我没有完全理解你的问题。从https://github.com/TroyGoode/PagedList使用PagedList时,我没有遇到有关“跳过”方法的问题。那是你正在使用的那个? –
是的,那是我正在使用的那个。问题是因为两个OrderBys发生在Union之前,所以PagedList不会接受它。我会编辑我的问题以提供更好的示例。 – Tom
我看不出为什么会出现该错误,但我添加了一个全新功能实现的新答案。 –