WEB开发网
开发学院软件开发C语言 为List添加排序的函数处理并列排名情况(上篇) 阅读

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

 2009-05-21 08:30:02 来源:WEB开发网   
核心提示:今天.做了个排名显示的功能. 需要处理并列的情况.. 首先相到了 SQL SERVER2005 的的Rank 函数..后来想是否可以为List<T> 实现一个扩展方法 实现并列排名..想了想 可以实现 .. 有这个想法就来实现吧..我的想法是 List<T> 调用Rank方法后 T类型就多了个属

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

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

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

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

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

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

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

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

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

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

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

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

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

1 2 3  下一页

Tags:List 添加 排序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接