读书人

*工作比较轻松上个实体类排序通用函

发布时间: 2012-01-07 21:41:55 作者: rapoo

********工作比较轻松,上个实体类排序通用函数(冒泡)

C# code
        /// <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++;            }        }


更多排序:http://blog.csdn.net/sq_zhuyi/archive/2010/04/24/5523282.aspx

[解决办法]
sfffffff
[解决办法]
SF 顶 ..
[解决办法]
占个位置先
[解决办法]
学习~~
[解决办法]
工作比较轻松,呵呵。。。。。。
不错,收藏。
[解决办法]
没啥想法,mark+jf
[解决办法]
写个效率高点的多好;
[解决办法]
进来学习一下
[解决办法]
围观两下
[解决办法]
厉害啊,学习先!
[解决办法]

[解决办法]

[解决办法]
路过学习............
[解决办法]
路过,帮顶!
[解决办法]
学习下子
[解决办法]
帮顶吧,哪么轻松呀,也被你感染了,呵呵……
[解决办法]
to learn from you
[解决办法]
NB学习下
[解决办法]


学习lz的编程思想。对于我这样的菜鸟提升很大。 我要细细品一下~~
[解决办法]
没怎么看明白,LZ能否分析下!!!
[解决办法]
UP.........
[解决办法]
不错。顶下。
[解决办法]
路过 学习
[解决办法]
学习 学习
[解决办法]
饿,zhu yi ?
[解决办法]
汗,分多了,就是爽啊,随便散都行~
[解决办法]
分`我要分`~ show me the 分~~~
[解决办法]
LZ都这么多分啦,厉害。。
[解决办法]
学习了。
[解决办法]
学习 了
[解决办法]
学习。
[解决办法]
jf[b][/b][i][/i]
[解决办法]
接分。
[解决办法]

[解决办法]
散分必须接/1`
[解决办法]
分霸 .
[解决办法]

[解决办法]
顶一下。
[解决办法]

[解决办法]
工作比较轻松,过来瞧瞧。。。不错
[解决办法]
分多了也有人愁啊

和现实中钱多了的人一样,哎,怎么我一样都没呢?
[解决办法]

探讨
C# code

/// <summary>
/// 对实体类进行排序
/// </summary>
/// <typeparam name="T">实体类型,如:User</typeparam>
/// <param name="list">实体类的数组</param>
/// <par……

[解决办法]
帮你顶下!谢谢分享!
[解决办法]
学习!!!!
[解决办法]
mark
[解决办法]
学习学习……
[解决办法]
接分!!
[解决办法]
排序学习,顶起
[解决办法]
j f
[解决办法]
学习~~~~
------解决方案--------------------


学习下~~
[解决办法]
占个座,拿分走人![color=#00FF00][/color]
[解决办法]
= =......
[解决办法]
好东西 收藏了
[解决办法]
工作轻松好。
[解决办法]
实体类还要排序吗?
[解决办法]
收藏好东东
[解决办法]
友情帮顶 学习~!
[解决办法]
这个必须顶
[解决办法]
学习一下!!!呵呵………………
[解决办法]
为什么要
public static void Sort<T>(object[] list, string order, bool asc)

public static void Sort<T>(T[] list, string order, bool asc)
不更好么?
[解决办法]
学习了
[解决办法]
PropertyInfo pro = type.GetProperty(order);

上面这句能否替换下面这段代码?

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;
}
}

[解决办法]
学习了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[解决办法]
不错的
[解决办法]
太好了
[解决办法]
顶一下
[解决办法]
学习。。。。。
[解决办法]
c#也用实体类了
[解决办法]
希望能拿点分,我好问更多的问题!
[解决办法]
mark jf
[解决办法]
没有排序规则啊,就算是按属性排序,也应该指出这个属性哪种情况下为大啊?
难道是我没看懂?
[解决办法]

探讨
没啥想法,分多了压身,必需散掉!O(∩_∩)O~

[解决办法]
学习,顺便接分
[解决办法]
学习了
[解决办法]
路过,学习,接分
[解决办法]
mark
[解决办法]
我缺分。多分点给我,谢谢了
[解决办法]
新手,路过学习一下


[解决办法]

探讨
没啥想法,分多了压身,必需散掉!O(∩_∩)O~

[解决办法]

[解决办法]
很好,学习学习
[解决办法]
占个位置先
[解决办法]
路过,顶一下
[解决办法]
测试
C# code
        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参数之类的比较器,用于特殊需求
[解决办法]
学习了
[解决办法]
路过!
[解决办法]
好东西就要一起分享,谢谢楼主了!!!

读书人网 >C#

热点推荐