自定义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
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