********工作比较轻松,上个实体类排序通用函数(冒泡)
/// <summary> /// 对实体类进行排序 /// </summary> /// <typeparam name="T">实体类型,如:User</typeparam> /// <param name="list">实体类的数组</param> /// <param name="order">排序字段(必须为属性)</param> /// <param name="asc">是否按正序排序</param> public static void Sort<T>(object[] list, string order, bool asc) { Type type = typeof(T); PropertyInfo[] pros = type.GetProperties(); PropertyInfo pro = pros[0]; order = order.ToLower(); for (int i = 0; i < pros.Length; i++) { if (pros[i].Name.ToLower().Equals(order)) { pro = pros[i]; break; } } object obj; int j, k = 1; bool done = false; int len = list.Length; while (k < len && !done) { done = true; for (j = 0; j < len - k; j++) { int b = pro.GetValue(list[j], null).ToString().CompareTo(pro.GetValue(list[j + 1], null).ToString()); if ((asc && b > 0) || (!asc && b < 0)) { done = false; obj = list[j]; list[j] = list[j + 1]; list[j + 1] = obj; } } k++; } }
学习lz的编程思想。对于我这样的菜鸟提升很大。 我要细细品一下~~
[解决办法]
没怎么看明白,LZ能否分析下!!!
[解决办法]
UP.........
[解决办法]
不错。顶下。
[解决办法]
路过 学习
[解决办法]
学习 学习
[解决办法]
饿,zhu yi ?
[解决办法]
汗,分多了,就是爽啊,随便散都行~
[解决办法]
分`我要分`~ show me the 分~~~
[解决办法]
LZ都这么多分啦,厉害。。
[解决办法]
学习了。
[解决办法]
学习 了
[解决办法]
学习。
[解决办法]
jf[b][/b][i][/i]
[解决办法]
接分。
[解决办法]
[解决办法]
散分必须接/1`
[解决办法]
分霸 .
[解决办法]
[解决办法]
顶一下。
[解决办法]
[解决办法]
工作比较轻松,过来瞧瞧。。。不错
[解决办法]
分多了也有人愁啊
和现实中钱多了的人一样,哎,怎么我一样都没呢?
[解决办法]
[解决办法]
class A { private int id; public int ID { get { return id; } set { id = value; } } } private void button2_Click(object sender, EventArgs e) { A a1 = new A(); a1.ID = 111; A a2 = new A(); a2.ID = 1; A a3 = new A(); a3.ID = 22; A[] list = new A[] {a1,a2,a3 }; Sort<A>(list, "ID", true); for (int i = 0; i < list.Length; i++) { Console.WriteLine(list[i].ID); //只有一个元素输出 } }
[解决办法]
哦,是输出1 111 22。
这个整型视为字符串排序会有问题啊
[解决办法]
[解决办法]
路过了。。。。。
[解决办法]
学习了
[解决办法]
mark~~~
[解决办法]
好东西就要一起分享,谢谢楼主了!!!
[解决办法]
[解决办法]
既然是泛型函数,为什么参数用object[] list而不用T[]?
可以考虑加个IComparer参数之类的比较器,用于特殊需求
[解决办法]
学习了
[解决办法]
路过!
[解决办法]
好东西就要一起分享,谢谢楼主了!!!