去年这个时候就在QQ上问宝玉老大ol是怎么排序的,当时不记怎么着没仔细去看。最近在为OL写注释,又想到这个问题了。理论很简单,只是我以前居然不知道还可以这么做,一心想着优化SQL却不知最好的优化就是别拿事给SQL干。废少说,正题:
第一步:写一个枚举,列出你所需要的排序方式,见:Openlab.Applications.Fourms.ForumPostSortBy;
第二步:为实体类声明一个静态属性,它的作用就是告诉机器要怎么排序,如FourmsPost类则有public static ForumPostSortBy SortBy属性(多少行就不知道了,因为我加了注释所以行数变了,自己到对象浏览器里找吧);
第三步:实体类继承IComparable接口,如Openlab.Applications.Fourms.FourmPost类的声明则为public class ForumPost : Content, IComparable<ForumPost>, IContent;
第四步:既然继承IComparable接口,就把CompareTo成员写下吧,这里就是排序的具体实现了。很简单,具体内容见源码。
到这就可以进行排序了。
第五步:
List<ForumPost> posts;
posts = ForumPostManager.GetForumPosts(allPostIds.ToArray(), ref forumPosts, true);
ForumPost.SortBy = ForumPostSortBy.SortOrder;
posts.Sort();
return posts;
在第三行写下需要的排序方式,再执行posts.Sort就可以了。
希望对新手有用。