记录学习过程,分享经验和心得
这两天读了张子阳的两篇文章,基于业务对象(列表)的筛选和基于业务对象(列表)的排序),如醍灌顶,大受启发。于是想在一个小网站上尝试一下。
先建立实体类,对应数据库字段,然后把数据加载到一个List<T>集合中,实现各种操作。 由于每个表都有Id这个字段,所以我写了一个抽象类;
然后其他实体类继承这个抽象类:
先来个排序吧,看一下MSDN对List<T>排序方法的说明:
先从简单的入手,使用不带参数的那个方法,实现按Id的倒序排列。按照《基于业务对象的排序》里的说法,实体类要实现 IComparable<T> 接口,于是我在Entity上实现了。
接下来测试一下,为了演示,就不从数据库读数据了。
全部代码:
结果出错了。如图:
受打击了~为什么我就不行呢~
查了一下详细错误:必须至少有一个对象实现 IComparable。既然如此,那我就实现IComparable接口:
代码丑多了,而且不能保证传入的参数是不是Entity类型,看来比较之前应该还要做检查,我这里测试,就不写了。运行一下先,竟然正常了!!
更受打击了~为什么漂亮的代码不可以而丑陋的代码就行??
不行,IComparable接口的代码看着就不爽,一定有其他原因,再找找。又看了看张子阳的文章,发现他没有用继承。那就不要抽象类了,User直接实现IComparable<T>接口。