自定义Linq的Distinct

代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 
10 namespace LinqTest
11 {
12     public partial class Form1 : Form
13     {
14         public Form1()
15         {
16             InitializeComponent();
17         }
18 
19         private void button1_Click(object sender, EventArgs e)
20         {
21 
22             List<c111> _c = new List<c111>();
23 
24             _c.Add(new c111("1","2"));
25             _c.Add(new c111("11","22"));
26 
27             List<c111> _c2=new List<c111>();
28             _c2.Add(new c111("1","3"));
29             _c2.Add(new c111("11","22"));
30 
31             var vvv = (from o in _c
32                        select o).Concat((from c in _c2 select c)).Distinct(new DistinctPersons());
33 
34 
35         }
36 
37 
38 
39     }
40 
41     public class DistinctPersons : IEqualityComparer<c111>
42     {
43         public bool Equals(c111 x, c111 y) 
44         {
45             if (x == null || y == null)    //optional
46             return false
47             else
48             return x.a== y.a; 
49         }
50         public int GetHashCode(c111 objPerson) 
51         {
52             return objPerson.a.GetHashCode(); 
53         }
54     } 
55 
56 
57     public class c111
58     {
59         public c111(string _a, string _b)
60         {
61             a = _a;
62             b = _b;
63         }
64         public string a
65         {
66             get;
67             set;
68         }
69         public string b
70         {
71             set;
72             get;
73         }
74     }
75 }
76 

 

posted @ 2010-01-19 13:12  simplay  阅读(768)  评论(0编辑  收藏  举报