問題:「方法'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
我看不出爲什麼會出現該錯誤,但我添加了一個全新功能實現的新答案。 –