在List范型集合中实现自定义条件复杂查询
来源:互联网 发布:计算机编程培训机构 编辑:程序博客网 时间:2024/05/16 19:22
using System;
using System.Collections.Generic;
using System.Text;
namespace ListDemo
{
/// <summary>
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// 大类别
/// </summary>
public class CatalogInfo
{
private int catalogId;
private string catalogName;
public string CatalogName
{
get { return catalogName; }
set { catalogName = value; }
}
public int CatalogId
{
get { return catalogId; }
set { catalogId = value; }
}
public CatalogInfo(int catalogId, string catalogName)
{
this.catalogId = catalogId;
this.catalogName = catalogName;
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ListDemo
{
/// <summary>
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// 大类别
/// </summary>
public class CatalogInfo
{
private int catalogId;
private string catalogName;
public string CatalogName
{
get { return catalogName; }
set { catalogName = value; }
}
public int CatalogId
{
get { return catalogId; }
set { catalogId = value; }
}
public CatalogInfo(int catalogId, string catalogName)
{
this.catalogId = catalogId;
this.catalogName = catalogName;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ListDemo
{
/// <summary>
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// 查找符合特定条件的CatalogInfo类
/// </summary>
public class CatalogFinder
{
private int catalogId;
public int CatalogId
{
get { return catalogId; }
set { catalogId = value; }
}
public CatalogFinder()
{
}
public CatalogFinder(int catalogId)
{
this.catalogId = catalogId;
}
/// <summary>
/// 符合Predicate>T< match的方法
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public bool FindByCatalogId(CatalogInfo info)
{
return info.CatalogId == catalogId;
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ListDemo
{
/// <summary>
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// 查找符合特定条件的CatalogInfo类
/// </summary>
public class CatalogFinder
{
private int catalogId;
public int CatalogId
{
get { return catalogId; }
set { catalogId = value; }
}
public CatalogFinder()
{
}
public CatalogFinder(int catalogId)
{
this.catalogId = catalogId;
}
/// <summary>
/// 符合Predicate>T< match的方法
/// </summary>
/// <param name="info"></param>
/// <returns></returns>
public bool FindByCatalogId(CatalogInfo info)
{
return info.CatalogId == catalogId;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ListDemo
{
/// <summary>
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// 小类别
/// </summary>
public class BoardInfo
{
private int boardId;
private string boardName;
private int catalogId;
/// <summary>
/// 所在大类别编号
/// </summary>
public int CatalogId
{
get { return catalogId; }
set { catalogId = value; }
}
public string BoardName
{
get { return boardName; }
set { boardName = value; }
}
public int BoardId
{
get { return boardId; }
set { boardId = value; }
}
public BoardInfo(int boardId, string boardName, int catalogId)
{
this.boardId = boardId;
this.boardName = boardName;
this.catalogId = catalogId;
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ListDemo
{
/// <summary>
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// 小类别
/// </summary>
public class BoardInfo
{
private int boardId;
private string boardName;
private int catalogId;
/// <summary>
/// 所在大类别编号
/// </summary>
public int CatalogId
{
get { return catalogId; }
set { catalogId = value; }
}
public string BoardName
{
get { return boardName; }
set { boardName = value; }
}
public int BoardId
{
get { return boardId; }
set { boardId = value; }
}
public BoardInfo(int boardId, string boardName, int catalogId)
{
this.boardId = boardId;
this.boardName = boardName;
this.catalogId = catalogId;
}
}
}
上面分别是两个范型集合中用到的实体,以及将来要用于查找这些实体的辅助类,下面距离说明用法:
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using ListDemo;
/// <summary>
/// 说明:在List<T>范型集合中提供了一类委托,以确定要寻找集合中的哪些符合条件的单个元素或者集合
/// msdn里描述如下:Predicate 委托,用于定义要搜索的元素应满足的条件。
/// 这一点msdn帮助里面说得很简单,只以List<string>范型集合为例说了一些简单应用,这些完全不能满足
/// 一些复杂的应用,比如查找集合中符合某些特性的单个元素或者元素集合,因为Predicate 委托只能使用
/// 一个参数,写本文的目的就是说明如何满足复杂的要求在范型集合中查找元素
/// 作者:周公
/// 日期:2007-12-28
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// </summary>
public class Example
{
public static void Main()
{
//初始化大类别集合
List<CatalogInfo> catalogList = new List<CatalogInfo>(10);
for (int i = 0; i <10; i++)
{
catalogList.Add(new CatalogInfo(i, "大类别" + i));
}
//初始化小类别集合,随机指定它们的大类别编号
List<BoardInfo> boardList = new List<BoardInfo>(50);
Random random=new Random(100);
for (int i = 0; i < 100; i++)
{
boardList.Add(new BoardInfo(i, "小类别" + i, random.Next() % 10));
}
Console.WriteLine("=======在大类别中查找========");
CatalogFinder catalogFinder = new CatalogFinder(5);
CatalogInfo catalogInfo = catalogList.Find(catalogFinder.FindByCatalogId);
Console.WriteLine("该大类别的名称:" + catalogInfo.CatalogName);
Console.WriteLine("=======在小类别中查找========");
BoardFinder boardFinder = new BoardFinder();
boardFinder.BoardId = 25;
BoardInfo boardInfo = 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 (BoardInfo info in boardInfoList)
{
Console.WriteLine("该小类别信息:小类别名称{0},所属大类别编号{1}", info.BoardName, info.CatalogId);
}
Console.ReadLine();
}
}
using System.Collections.Generic;
using System.Drawing.Imaging;
using ListDemo;
/// <summary>
/// 说明:在List<T>范型集合中提供了一类委托,以确定要寻找集合中的哪些符合条件的单个元素或者集合
/// msdn里描述如下:Predicate 委托,用于定义要搜索的元素应满足的条件。
/// 这一点msdn帮助里面说得很简单,只以List<string>范型集合为例说了一些简单应用,这些完全不能满足
/// 一些复杂的应用,比如查找集合中符合某些特性的单个元素或者元素集合,因为Predicate 委托只能使用
/// 一个参数,写本文的目的就是说明如何满足复杂的要求在范型集合中查找元素
/// 作者:周公
/// 日期:2007-12-28
/// 首发地址:http://blog.csdn.net/zhoufoxcn
/// </summary>
public class Example
{
public static void Main()
{
//初始化大类别集合
List<CatalogInfo> catalogList = new List<CatalogInfo>(10);
for (int i = 0; i <10; i++)
{
catalogList.Add(new CatalogInfo(i, "大类别" + i));
}
//初始化小类别集合,随机指定它们的大类别编号
List<BoardInfo> boardList = new List<BoardInfo>(50);
Random random=new Random(100);
for (int i = 0; i < 100; i++)
{
boardList.Add(new BoardInfo(i, "小类别" + i, random.Next() % 10));
}
Console.WriteLine("=======在大类别中查找========");
CatalogFinder catalogFinder = new CatalogFinder(5);
CatalogInfo catalogInfo = catalogList.Find(catalogFinder.FindByCatalogId);
Console.WriteLine("该大类别的名称:" + catalogInfo.CatalogName);
Console.WriteLine("=======在小类别中查找========");
BoardFinder boardFinder = new BoardFinder();
boardFinder.BoardId = 25;
BoardInfo boardInfo = 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 (BoardInfo info in boardInfoList)
{
Console.WriteLine("该小类别信息:小类别名称{0},所属大类别编号{1}", info.BoardName, info.CatalogId);
}
Console.ReadLine();
}
}
- 在List范型集合中实现自定义条件复杂查询
- 在List范型集合中实现自定义条件复杂查询
- 在List范型集合中实现自定义条件复杂查询 .
- 条件查询List集合,由查询的结果,算出一行数据,添加到集合中!
- C#实现List集合的自定义查询简介
- OpenJweb 1.6中自定义组合查询条件的实现方式
- YII中自定义查询条件
- 在sphinx中应用复杂过滤条件
- 复杂搜索条件查询
- 复杂条件的查询
- 复杂条件查询
- List集合实现自定义排序
- 用list集合做多条件中含日期范围的查询实例
- mybatis中传入一个List或Map集合作为查询条件的参数
- Mybatis查询实例,sql中的in在Mybatis中怎么写--以list为查询条件
- Mybatis查询实例,sql中的in在Mybatis中怎么写--以list为查询条件
- 在PowerBuilder中利用DataStore实现查询条件的记忆
- mybatis中根据多条件list查询
- member function redeclaration not allowed 问题
- 静态页中利用AJAX.NET实现无刷新页面
- Jprofiler解决java服务器的性能跟踪
- C# Regex 深入正则表达式
- 使用XmlReader读取xml文件
- 在List范型集合中实现自定义条件复杂查询
- .net2.0中对config文件的操作方法总结
- 在asp.net中备份还原SQL Server数据库
- javascript 中的URL 编码问题! encodeURI, encodeURIComponent 如何使用
- HibernateUtil中的Session Close错误
- OLE 基础
- 如何增加普通用户的打开文件数限制
- .net类库中发送电子邮件的方法总结
- AJAX真的是以后网站发展的方向,它会对WEB带来革命性的改变吗?