C#实现List集合的自定义查询

此例实现通过自定义查询类来实现List的查询:

要查询的类定义如下:

 1 public partial class XTeacher
 2     {
 3         private string m_Name = string.Empty;
 4 
 5         public string Name
 6         {
 7             get { return this.m_Name; }
 8             set { this.m_Name = value; }
 9         }
10 
11         private string m_Id = string.Empty;
12 
13         public string Id
14         {
15             get { return this.m_Id; }
16             set { this.m_Id = value; }
17         }
18 
19         public XTeacher(string name, string id)
20         {
21             this.m_Name = name;
22             this.m_Id = id;
23         }
24     }

自定义查询类实现代码如下:

 1  public partial class XTeacherFinder
 2     {
 3         private string m_TeacherId = string.Empty;
 4 
 5         public string TeacherId
 6         {
 7             get { return m_TeacherId; }
 8             set { this.m_TeacherId = value; }
 9         }
10 
11         private string m_TeacherName = string.Empty;
12 
13         public string TeacherName
14         {
15             get { return this.m_TeacherName; }
16             set { this.m_TeacherName = value; }
17         }
18 
19         public XTeacherFinder()
20         {
21 
22         }
23 
24         /// <summary>
25         /// 通过ID查找
26         /// </summary>
27         /// <param name="teacher"></param>
28         /// <returns></returns>
29         public bool FindTeacherById(XTeacher teacher)
30         {
31             return m_TeacherId == teacher.Id;
32         }
33 
34         /// <summary>
35         /// 通过名称查找
36         /// </summary>
37         /// <param name="teacher"></param>
38         /// <returns></returns>
39         public bool FindTeacherByName(XTeacher teacher)
40         {
41             return m_TeacherName == teacher.Name;
42         }
43 
44         /// <summary>
45         /// 通过ID和名称查找
46         /// </summary>
47         /// <param name="teacher"></param>
48         /// <returns></returns>
49         public bool FindTeacherByIdAndName(XTeacher teacher)
50         {
51             return (m_TeacherName == teacher.Name && m_TeacherId == teacher.Id);
52         }
53     }

客户端调用方法如下:

 1   static void Main(string[] args)
 2         {
 3 
 4             List<XTeacher> teachers = new List<XTeacher>();
 5 
 6             XTeacher teacher = new XTeacher("test1", "1");
 7             teachers.Add(teacher);
 8 
 9             teacher = new XTeacher("test2", "2");
10             teachers.Add(teacher);
11 
12             teacher = new XTeacher("test2", "3");
13             teachers.Add(teacher);
14 
15             XTeacherFinder teacherFinder = new XTeacherFinder();
16             teacherFinder.TeacherId = "1";
17 
18             XTeacher findedTeacher = teachers.Find(teacherFinder.FindTeacherById);
19             Console.WriteLine("通过ID找到教师:{0},{1}", findedTeacher.Id, findedTeacher.Name);
20 
21             XTeacherFinder finder=new XTeacherFinder();
22             finder.TeacherName="test2";
23             XTeacher findedTeacherByName = teachers.Find(finder.FindTeacherByName);
24             Console.WriteLine("通过名称找到教师:{0},{1}", findedTeacherByName.Id, findedTeacherByName.Name);
25 
26             List<XTeacher> findedTeachers = teachers.FindAll(finder.FindTeacherByName);
27             foreach (XTeacher t in findedTeachers)
28             {
29                 Console.WriteLine("通过名称找到教师集合:{0},{1}", t.Id, t.Name);
30             }
31 
32             XTeacherFinder f = new XTeacherFinder();
33             f.TeacherId = "3";
34             f.TeacherName = "test2";
35             XTeacher fTeacher = teachers.Find(f.FindTeacherByIdAndName);
36             Console.WriteLine("通过ID和名称找到教师:{0},{1}", fTeacher.Id, fTeacher.Name);
37 
38             Console.Read();
39         }

 

posted on 2012-05-06 14:35  武子  阅读(17206)  评论(0编辑  收藏  举报

导航