DatatableDataViewDataGridView中不显示重复的记录

其中,对于直接在查询语句中使用distinct不作过多说明,主要从代码层角度实现

方法一,在加载数据的时候,对于重复的数据,选择不进行加载。
代码如下:

<span style="font-size:14px;">OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program\Database\employInfo.accdb");             conn.Open();             OleDbDataReader dr;             OleDbCommand view = new OleDbCommand("SELECT * FROM Employ", conn);             dataGridView1.Rows.Clear();             dr = view.ExecuteReader();             int ii = dataGridView1.Rows.Count;             bool isexist = false;             while (dr.Read())             {                 if (dataGridView1.Rows.Count == 0)                 {                     dataGridView1.Rows.Add(dr["EmployId"], dr["EmployName"], dr["EmployCompany"]);                 }                 else                 {                     for (int i = 0; i < dataGridView1.Rows.Count; i++)                     {                         if (dataGridView1.Rows[i].Cells["EmployId"].Value.ToString() == dr["EmployId"].ToString()                         && dataGridView1.Rows[i].Cells["EmployName"].Value.ToString() == dr["EmployName"].ToString()                             && dataGridView1.Rows[i].Cells["EmployCompany"].Value.ToString() == dr["EmployCompany"].ToString())                         {                             isexist=true;                             break;                         }                                             }                     if (!isexist)                     {                         dataGridView1.Rows.Add(dr["EmployId"], dr["EmployName"], dr["EmployCompany"]);                                             }                     isexist = false;                 }             }             dr.Close();             conn.Close();</span>

方法二.在现有的Datatable中去重,.net2.0提供了一个非常有效的方法DataView.ToTable 方法
具体代码如下:

 OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program\Database\employInfo.accdb");             conn.Open();             OleDbDataReader dr;             OleDbCommand view = new OleDbCommand("SELECT * FROM Employ", conn);             dataGridView1.Rows.Clear();             dr = view.ExecuteReader();             int ii = dataGridView1.Rows.Count;             bool isexist = false;             while (dr.Read())             {                 dataGridView1.Rows.Add(dr["EmployId"], dr["EmployName"], dr["EmployCompany"]);             }             dr.Close();             conn.Close();                          DataTable dt = new DataTable();             OleDbDataAdapter da = new OleDbDataAdapter();             da.SelectCommand = view;             da.Fill(dt);             DataTable dtnew = dt.DefaultView.ToTable(true);             dataGridView2.DataSource = dtnew;//dtnew and dt both are DataTable

关于DataView.ToTable 方法可以参照如下链接:
http://msdn.microsoft.com/zh-cn/library/wec2b2e6(v=vs.110).aspx