Google
 
欢迎光临
  发起投票 | 发起主题  
2005-01-07
<请修改您的心情短语>
帖子数: 39
无等级(0)

 

去年这个时候就在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就可以了。

希望对新手有用。




 

2009-04-17 02:29 第 1 楼 回复 | 引用 | 编辑 | | Top

2001-04-12
男
吃饭的时候,一女同事忧心忡忡地说:“我可能要红了。” 大家很好奇,问“怎么啦?” “刚才发现我的一块U盘丢了...8个G的..
帖子数: 15113
发帖数前10位(2)

 
核心在实现 IComparable 或 IComparable<T> 接口,后者是泛型,可以在实现CompareTo方法的时候参数直接强类型。实现后,在IList集合中,就可以直接调用Sort方法,根据CompareTo中实现的排序规则来排序

儿子说:我是黑猫警长,当然要有胡子了!

2009-04-17 08:11 第 2 楼 回复 | 引用 | 编辑 | | Top

  1. 主页
  2. »
  3. 论坛首页
  4. »
  5. 科技文化
  6. »
  7. Openlab技术
  8. »
  9. Openlab.Framework笔记:实体排序
 



Powered By Openlab v3.0 (Debug Build: 1.28817) © 2010. 页面执行: 0.062秒. 内存使用: 276.8MB. 9 次数据库查询.

京ICP备05050892号