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

今天.做了个排名显示的功能.  需要处理并列的情况.. 首先相到了 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;
        }

时间: 2024-08-18 03:20:27

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

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

在上篇文章中 我们完成了动态创建类型.动态设置值.动态获取值.动态获取属性和返回值的一些方 法 准备工作完成了.. 我们现在来完成排序的功能 实现方式肯定还是扩展方法.. 实现比较2个值的方法 我们可以给用户提供. 我们不提供比较的方法 这样设计灵活性更好.. 用户提供方法?? 怎么实现 很简单 2种方式 一种使用接口.. 另外一种使用的是委托.. 我比较喜欢委托 我就使用委托的方式 .NET 中有预定于的委托 Comparison<T> 类型的委托 当然.NET 也定义了IComparer&

[数据库] MySQL基础知识之日期判断及添加排序序号

这篇文章主要记录MySQL中遇到的几个基础问题,希望文章对你有所帮助!包括:         1.日期类型的判断         2.decode函数的替代方法         3.查询语句中添加一个排序的序号         4.子函数查询select a.* 1.日期类型判断 日期类型主要是:DATE(显示格式:YYYY-MM-DD)                            DATETTIME(显示格式:YYYY-MM-DD HH:MM:SS)假设存在学生表Student,如下

函数调用-新人求助 vb.net+access数据库编写电话簿,调用添加和删除函数,调试都卡住了。

问题描述 新人求助 vb.net+access数据库编写电话簿,调用添加和删除函数,调试都卡住了. 添加函数: '写一个添加用户信息的方法,它的返回值是布尔型, Function AddUser(ByVal User As DBuser) As Boolean '首先判断用户名是否已经存在 Dim SQLString As String SQLString = "SELECT * FROM telephonebook WHERE 姓名 ='" & nm & "

c-请问这个对链表进行排序的函数有什么问题?

问题描述 请问这个对链表进行排序的函数有什么问题? 解决方案 我大概知道了,复制内存的时候指针也被复制过去了. 解决方案二: 我大概知道了,复制内存的时候指针也被复制过去了. 解决方案三: 我大概知道了,复制内存的时候指针也被复制过去了. 解决方案四: 我大概知道了,复制内存的时候指针也被复制过去了. 解决方案五: 我大概知道了,复制内存的时候指针也被复制过去了. 解决方案六: 我大概知道了,复制内存的时候指针也被复制过去了. 解决方案七: 我大概知道了,复制内存的时候指针也被复制过去了. 解决

c++-C++ 6.0结构体字段多重排序的函数指针

问题描述 C++ 6.0结构体字段多重排序的函数指针 C++对结构体数组进行排序,排序结果存在紊乱,库函数的函数指针怎么解决排序紊乱的问题? 解决方案 参考:http://blog.csdn.net/lethic/article/details/7781203 解决方案二: 运算符重载,大于号重新定义,然后直接sort 解决方案三: 需要定义使用结构体的哪个成员作为排序用的key,然后对该key定义小于运算符重载,进行排序.

WordPress中使主题支持小工具以及添加插件启用函数_php实例

让主题支持小工具WordPress 的小工具(widget)是一大特色,它让用户自由拖动组合内容,而且任何插件和主题都可以添加一个额外的小工具,增加扩展性. 默认情况下,一个主题并不会支持小工具,需要主题开发者启用小工具功能并把小工具在相应的前台位置调用出来,这样用户才能在后台直接拖动生成侧边栏. 本文就来教你如何激活小工具功能,并且添加一个侧边栏,最后在前台显示出来. 注册侧边栏 默认的,后台外观下是没有 "小工具" 这个菜单按钮的,如果想要让他出现,就至少需要注册一个侧边栏,否则即

PHP下对数组进行排序的函数_php技巧

经常,开发人员发现在PHP中使用这种数据结构对值或者数组元素进行排序非常有用.PHP提供了一些适合多种数组的排序函数,这些函数允许你在数组内部对元素进行排列,也允许用很多不同的方法对它们进行重新排序.在这篇文章中我们将讨论该排序中最重要的几个函数. 简单排序 首先,让我们来看看最简单的情况:将一个数组元素从低到高进行简单排序,这个函数既可以按数字大小排列也可以按字母顺序排列.PHP的sort()函数实现了这个功能,如Listing A所示: Listing A 复制代码 代码如下: <?php

android实现状态栏添加图标的函数实例

本文实例讲述了android实现状态栏添加图标的函数.分享给大家供大家参考.具体如下: private void showNotification() { // 创建一个NotificationManager的引用 NotificationManager notificationManager = (NotificationManager) AutoFile.this.getSystemService(android.content.Context.NOTIFICATION_SERVICE);

treemap-排行榜如果用TreeMap的话,出现并列排名如何处理?

问题描述 排行榜如果用TreeMap的话,出现并列排名如何处理? 例如金钱排行榜,用拥有的金钱作为key. 如果出现了相同的金钱的话那么key值就会重复. 我曾考虑在value上使用List保存相同的排名, 但是这会增加使用ceilingKey等函数的使用复杂度 解决方案 建议你封装把成绩和金钱封装成对象,用TreeSet来处理,自己实现比较器,然后直接迭代就可以了.