阿赛·游梦鱼·郭言赛·阿赛工作室
全站技术源码素材

为List添加排序的函数处理并列排名情况(上篇)

  •  字体:
  • 今天.做了个排名显示的功能.  需要处理并列的情况.. 首先相到了 SQL SERVER2005 的的Rank 函数 ..

    后来想是否可以为List 实现一个扩展方法 实现并列排名..

    想了想 可以实现 ..  有这个想法就来实现吧..

    我的想法是  List 调用Rank方法后  T类型就多了个属性 用来获取 名次..

    但是怎么为T类型动态添加属性 .. 我想到了动态创建一个类型..

    .net 可以动态的创建一个类型.. .

    有2总方式(我只知道2总...我还想到了个动态构造Lambda 使用new{} 不知道可以么..我想应该可以. 没试过(刚刚想到的)))

    方式1:使用 System.Reflection.Emit 命名空间下的类..   (都是直接或间接操作IL代码)

    方式2:使用 Microsoft.CSharp; System.CodeDom.Compiler; 这个2个命名空间下的类就可以实现 相 对比较简单..

    我们先来看看 怎么动态创建一个类型。。

    动态创建类型  首先名字要动态的. 

    这个方法很简单.. 就是利用ascii码获得26个大小写字母

    ///
            /// 动态创建一个英文名称
            ///
            /// 长度
            ///
            public static string CreateEnglish(int number)
            {
                Random random = new Random(DateTime.Now.Millisecond);
                List en = new List();
                Enumerable.Range(97, 26).ToList().ForEach(t => en.Add(((char)t).ToString()));
                Enumerable.Range(65, 26).ToList().ForEach(t => en.Add(((char)t).ToString()));
                string reuslt = string.Empty;
                for (int i = 0; i             {
                    reuslt += en[random.Next(en.Count)];
                }
                return reuslt;
            }


    MapSiteMapRssGoTop