Sql 从dataGridViewComboBoxColumn中删除重复的值
我使用Sql 从dataGridViewComboBoxColumn中删除重复的值,sql,datagridview,combobox,distinct,datagridcomboboxcolumn,Sql,Datagridview,Combobox,Distinct,Datagridcomboboxcolumn,我使用datagridviewcomboxcolumn在DataGridView中创建一个ComboBox,但是我的ComboBox不够好。我需要我的组合框上没有重复的值。这是一个例子: 苹果 黑莓 铬 苹果 我想删除多次出现的值。我该怎么做 这是我的代码: OleDbConnection conn = new OleDbConnection(); OleDbCommand cmd = new OleDbCommand(); Dataset data = new Dataset(); OleDb
datagridviewcomboxcolumn
在DataGridView
中创建一个ComboBox
,但是我的ComboBox
不够好。我需要我的组合框
上没有重复的值。这是一个例子:
苹果黑莓
铬
苹果 我想删除多次出现的值。我该怎么做 这是我的代码:
OleDbConnection conn = new OleDbConnection();
OleDbCommand cmd = new OleDbCommand();
Dataset data = new Dataset();
OleDbDataAdapter adapter = new OleDbDataAdapter();
string path = "Data Source = "+".\\"+"test.accdb";
string conStr = "Provider = Microsoft.ACE.OleDb.12.0;"+@path;
conn.Open();
string sql = "SELECT * FROM Table1;"
cmd = new OleDbCommand(sql,conn);
adapter = new OleDbDataAdapter(cmd);
data = new Dataset();
adapter.Fill(data,"Table1");
DataGridViewComboBoxColumn testcolumn = new DataGridViewComboBoxColumn();
testcolumn.Name = "test na ja";
testcolumn.Datasource = data.table[0];
testcolumn.ValueMember = "Remedy";
testcolumn.DisplayMember = "Remedy";
dataGridview1.Columns.Add(testcolumn);
conn.Close()
更改
SELECT
语句以返回rememy
的不同值:
string sql = "SELECT DISTINCT remedy FROM Table1;"
如果您想订购:
string sql = "SELECT DISTINCT remedy FROM Table1 ORDER BY remedy ASC;"
或
除了将distinct语句应用于SQL之外,在创建第二个表时,还可以将distinct语句应用于原始的
DataTable
,如下所示(包括我用于原型化的单元测试和帮助器类)
我在下面添加了一条注释以突出显示应用distinct的行-您使用的是.ToTable()方法,该方法使用布尔参数distinct来指定仅返回distinct行
[TestMethod]
public void CreateDistinctDataTable()
{
DataTable originalTable = CreateDataTable();
AddDataToTable("Fred", "Bloggs", originalTable);
AddDataToTable("Fred", "Bloggs", originalTable);
AddDataToTable("John", "Doe", originalTable);
// This is the key line of code where we use the .ToTable() method
DataTable distinctTable = originalTable.DefaultView.ToTable( /*distinct*/ true);
// The original table has two rows with firstname of Fred
Assert.AreEqual(2, originalTable.Select("firstname = 'Fred'").Length);
// The new table only has one row with firstname of Fred
Assert.AreEqual(1, distinctTable.Select("firstname = 'Fred'").Length);
}
private DataTable CreateDataTable()
{
DataTable myDataTable = new DataTable();
DataColumn myDataColumn;
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "firstname";
myDataTable.Columns.Add(myDataColumn);
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "lastname";
myDataTable.Columns.Add(myDataColumn);
return myDataTable;
}
private void AddDataToTable(string firstname, string lastname, DataTable myTable)
{
DataRow row = myTable.NewRow();
row["firstname"] = firstname;
row["lastname"] = lastname;
myTable.Rows.Add(row);
}
另外一个想法是,我建议不要在SQL语句中从表中选择*。如果添加更多的列(特别是blob之类的东西),这可能会影响性能,也可能意味着您得到的列会破坏查询的独特性质
[TestMethod]
public void CreateDistinctDataTable()
{
DataTable originalTable = CreateDataTable();
AddDataToTable("Fred", "Bloggs", originalTable);
AddDataToTable("Fred", "Bloggs", originalTable);
AddDataToTable("John", "Doe", originalTable);
// This is the key line of code where we use the .ToTable() method
DataTable distinctTable = originalTable.DefaultView.ToTable( /*distinct*/ true);
// The original table has two rows with firstname of Fred
Assert.AreEqual(2, originalTable.Select("firstname = 'Fred'").Length);
// The new table only has one row with firstname of Fred
Assert.AreEqual(1, distinctTable.Select("firstname = 'Fred'").Length);
}
private DataTable CreateDataTable()
{
DataTable myDataTable = new DataTable();
DataColumn myDataColumn;
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "firstname";
myDataTable.Columns.Add(myDataColumn);
myDataColumn = new DataColumn();
myDataColumn.DataType = Type.GetType("System.String");
myDataColumn.ColumnName = "lastname";
myDataTable.Columns.Add(myDataColumn);
return myDataTable;
}
private void AddDataToTable(string firstname, string lastname, DataTable myTable)
{
DataRow row = myTable.NewRow();
row["firstname"] = firstname;
row["lastname"] = lastname;
myTable.Rows.Add(row);
}