说明:在List<T>范型集合中提供了一类委托,以确定要寻找集合中的哪些符合条件的单个元素或者集合
msdn里描述如下:Predicate 委托,用于定义要搜索的元素应满足的条件。
这一点msdn帮助里面说得很简单,只以List<string>范型集合为例说了一些简单应用,这些完全不能满足
一些复杂的应用,比如查找集合中符合某些特性的单个元素或者元素集合,因为Predicate 委托只能使用
一个参数,写本文的目的就是说明如何满足复杂的要求在范型集合中查找元素
作者:周公
日期:2007-12-28(没办法,去年写好的文章,因为csdn的博客不行,拖到今年发了
)
首发地址:
http://blog.csdn.net/zhoufoxcn
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceListDemo
{
///<summary>
///首发地址:http://blog.csdn.net/zhoufoxcn
///大类别
///</summary>
publicclassCatalogInfo
{
privateintcatalogId;
privatestringcatalogName;
publicstringCatalogName
{
get{returncatalogName;}
set{catalogName=value;}
}
publicintCatalogId
{
get{returncatalogId;}
set{catalogId=value;}
}
publicCatalogInfo(intcatalogId,stringcatalogName)
{
this.catalogId=catalogId;
this.catalogName=catalogName;
}
}
}
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceListDemo
{
///<summary>
///首发地址:http://blog.csdn.net/zhoufoxcn
///查找符合特定条件的CatalogInfo类
///</summary>
publicclassCatalogFinder
{
privateintcatalogId;
publicintCatalogId
{
get{returncatalogId;}
set{catalogId=value;}
}
publicCatalogFinder()
{
}
publicCatalogFinder(intcatalogId)
{
this.catalogId=catalogId;
}
///<summary>
///符合Predicate>T<match的方法
///</summary>
///<paramname="info"></param>
///<returns></returns>
publicboolFindByCatalogId(CatalogInfoinfo)
{
returninfo.CatalogId==catalogId;
}
}
}
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceListDemo
{
///<summary>
///首发地址:http://blog.csdn.net/zhoufoxcn
///小类别
///</summary>
publicclassBoardInfo
{
privateintboardId;
privatestringboardName;
privateintcatalogId;
///<summary>
///所在大类别编号
///</summary>
publicintCatalogId
{
get{returncatalogId;}
set{catalogId=value;}
}
publicstringBoardName
{
get{returnboardName;}
set{boardName=value;}
}
publicintBoardId
{
get{returnboardId;}
set{boardId=value;}
}
publicBoardInfo(intboardId,stringboardName,intcatalogId)
{
this.boardId=boardId;
this.boardName=boardName;
this.catalogId=catalogId;
}
}
}
上面分别是两个范型集合中用到的实体,以及将来要用于查找这些实体的辅助类,下面距离说明用法:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Drawing.Imaging;
usingListDemo;
///<summary>
///说明:在List<T>范型集合中提供了一类委托,以确定要寻找集合中的哪些符合条件的单个元素或者集合
///msdn里描述如下:Predicate委托,用于定义要搜索的元素应满足的条件。
///这一点msdn帮助里面说得很简单,只以List<string>范型集合为例说了一些简单应用,这些完全不能满足
///一些复杂的应用,比如查找集合中符合某些特性的单个元素或者元素集合,因为Predicate委托只能使用
///一个参数,写本文的目的就是说明如何满足复杂的要求在范型集合中查找元素
///作者:周公
///日期:2007-12-28
///首发地址:http://blog.csdn.net/zhoufoxcn
///</summary>
publicclassExample
{
publicstaticvoidMain()
{
//初始化大类别集合
List<CatalogInfo>catalogList=newList<CatalogInfo>(10);
for(inti=0;i<10;i++)
{
catalogList.Add(newCatalogInfo(i,"大类别"+i));
}
//初始化小类别集合,随机指定它们的大类别编号
List<BoardInfo>boardList=newList<BoardInfo>(50);
Randomrandom=newRandom(100);
for(inti=0;i<100;i++)
{
boardList.Add(newBoardInfo(i,"小类别"+i,random.Next()%10));
}
Console.WriteLine("=======在大类别中查找========");
CatalogFindercatalogFinder=newCatalogFinder(5);
CatalogInfocatalogInfo=catalogList.Find(catalogFinder.FindByCatalogId);
Console.WriteLine("该大类别的名称:"+catalogInfo.CatalogName);
Console.WriteLine("=======在小类别中查找========");
BoardFinderboardFinder=newBoardFinder();
boardFinder.BoardId=25;
BoardInfoboardInfo=boardList.Find(boardFinder.FindByBoardId);
Console.WriteLine("该小类别信息:小类别名称{0},所属大类别编号{1}",boardInfo.BoardName,boardInfo.CatalogId);
Console.WriteLine("=======在小类别中按大类别编号查找========");
boardFinder.CatalogId=9;
List<BoardInfo>boardInfoList=boardList.FindAll(boardFinder.FindByCatalogId);
foreach(BoardInfoinfoinboardInfoList)
{
Console.WriteLine("该小类别信息:小类别名称{0},所属大类别编号{1}",info.BoardName,info.CatalogId);
}
Console.ReadLine();
}
}
以下是输出结果:
分享到:
相关推荐
Java 实现泛型List的源码,基本实现了List接口的全部所有方法。欢迎大家发表自己的观点和建议。
C#数组、集合对象和范型,讲解详细,对于编程很实用
本书详细地介绍了从“应用领域”到“方案领域”的C++设计实现方法,以及开发者在设计思考和设计实践过程中需要用到的记法、图表和设计模型。在读完这本书以后,读者将会了解如何根据应用领域的共同性和差异性分析...
C++多范型设计,ISBN:9787508318240,作者:(美)James O.Coplien著;鄢爱兰,周辉等译;鄢爱兰译
实验六,集合与范型.zip
范型List<T> Dictory,Value>增加事件功能 范型List<T> Dictory,Value>增加事件功能
《分布式系统原理与范型》是分布式系统中的经典教材,全书分为两部分:原理和范型。第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了...
消息传递范型与C/S范型双范型的主数据管理机制,陈晓云,邢乔金,本文针对主数据管理(MDM)存在的问题提出了一种基于消息传递机制范型与C/S范型双范型的主数据管理机制,当各个分系统的数据有所变化�
Java 范型Java 范型
范型程序设计与 STL.pdf,大小约 300K。
java1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.docjava1.5范型编程指南.doc
分布式系统原理与范型 第二版 英文+中文版本 全书分为两部分:原理和范型。第一部分详细讨论了分布式系统的原理、概念和技术,其中包括通信、进程、命名、同步、一致性和复制、容错以及安全。第二部分给出了一些...
《分布式系统原理与范型》第一版.中文版,影印版。
但是,与前一版不同的是,我们没有在讨论范型的章节中完整地介绍每个案例研究,而是通过一个有代表性的案例来解释原理。这种介绍方法使得我们不仅精简了素材,而且可以使得读者在阅读和学习时更愉快些。全书结构清晰...
有限状态自动机具有一个有限集合的输出。则自动机将会产生一连串的输出以反映出一连串的输入。...在计算器科学的许多领域中,有限状态是非常有用的设计模型,包括编译器中的语汇扫瞄,以计算协议之定义,与交换电路。
分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案 分布式系统原理与范型第二版课后习题答案
分布式系统原理与范型.pdf tanenbaum的早期操作系统著作
范型和仿函数在桌面系统中的应用
C++多范型设计.pdfC++多范型设计.pdfC++多范型设计.pdf