加载中…
个人资料
无名指
无名指
  • 博客等级:
  • 博客积分:0
  • 博客访问:5,831
  • 关注人气:150
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# 中List类的Find、Exists、Sort, 等方法的应用举例

(2009-04-11 00:00:00)
标签:

杂谈

分类: c#

C# 中List类的Find,Exists,FindAll,FindIndex ,FindLast ,FindLastIndex等方法的应用举例

以Exists为例,MSDN中是这样叙述的

ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/pubmethod.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/xna.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> Exists

确定 List<(Of <(T>)>) 是否包含与指定谓词所定义的条件相匹配的元素。

 

       我一直都认为编写MSDN文档的人语文是好的令人发指啊!

       相信很多人都深有体会,这里每个字都认识,放一起完全不知所云,看了好多例子才知道是怎么回事,不知道是我肤浅,还是技术总是要深奥。

       总结一下,写了一个通俗点的例子,希望能对看到的人有用。

 

     static void Main(string[] args)//主函数即入口函数,不知道什么意思的面壁吧!
                {
                        List<decimal> list1=new List<decimal>();//此处<>内是泛型的概念,不知道
                                                                            //的话找本教材看下吧,感觉就像是宏

                                                                                                     // 替换
                        for(int i=0; i<100;i++)                         //生成链表
                        {
                                list1.Add(i);
                        }
                                

                        if (list1.Exists(MatchPRE))//调用方法,谓词匹配函数的调用,这是调用您自定义的函

                                                                                                                                         //数MatchPRE
                                Console.WriteLine("ok");//若list1中存在99,则输出ok
                        else
                                Console.WriteLine("fail");//若list1中不存在99,则输出fail
                        Console.ReadLine();
                }
                private static bool MatchPRE(decimal p)//条件匹配函数,list1中每个元素都会传入P中

                                                                                            //匹配后函数返回
                {
                       if (p == 99)//此句为匹配条件,如果匹配,返回,你可以随意更改成你想要的值
                                return true;
                        else
                        {
                                return false;
                        }
                }

 

例程源代码

 

20090928更新

关于List(T).Sort方法,MSDN是这样叙述的。

 

  名称 说明
ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/pubmethod.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/xna.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> Sort()()() 使用默认比较器对整个 List<(Of <(T>)>) 中的元素进行排序。
ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/pubmethod.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/xna.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> Sort(Comparison<(Of <(T>)>)) 使用指定的 System..::.Comparison<(Of <(T>)>) 对整个 List<(Of <(T>)>) 中的元素进行排序。
ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/pubmethod.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/xna.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> Sort(IComparer<(Of <(T>)>)) 使用指定的比较器对整个 List<(Of <(T>)>) 中的元素进行排序。
ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/pubmethod.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> ms-help://MS.MSDNQTR.v90.chs/fxref_mscorlib/icons/xna.gif中List类的Find、Exists、Sort, 等方法的应用举例" /> Sort(Int32, Int32, IComparer<(Of <(T>)>)) 使用指定的比较器对 List<(Of <(T>)>) 中某个范围内的元素进行排序。
 
 
1.你可一采用第一个方法,这个方法为默认方法,对于T为数时将List的成员按照从小到大排列。
2.如果不符合要求则你需要使用第二个方法,实现Comparison<(Of <(T>)>) 泛型委托。即下面的例子
3.也可是利用实现比较器接口的方法实现,即最后两种方法。
 

List.Sort应用例程:实现比较泛型委托

                static void Main(string[] args)
                {
                       Random _random = new Random();//随机对象
                        List<int> _iList = new List<int>();//列表对象
                        for (int i = 0; i < 10; i++)
                        {
                                _iList.Add( _random.Next(0,10)); //随机函数创建列表
                        }
                        Console.WriteLine("排序前");
                        for (int i = 0; i < 10; i++)
                        {
                                Console.WriteLine(_iList[i]);//排序前输出
                        }

                        _iList.Sort(CompareListBig);//执行排序
                        Console.WriteLine("排序后");
                        for (int i = 0; i < 10; i++)
                        {
                                Console.WriteLine(_iList[i]);//排序后输出
                        }
                        Console.ReadLine();
                }
                private static int CompareListBig(int _a,int _b)//由大到小
                {
                        int _temp = _a - _b;
                        if (_temp < 0) return 1;
                        if (_temp > 0) return -1;
                        return 0;
                }
                private static int CompareListSmall(int _a, int _b)//由小到大
                {
                        int _temp = _a - _b;
                        if (_temp> 0) return 1;
                        if (_temp < 0) return -1;
                         return 0;
                }

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有