C# 如何消除comboBox 中的重复值?
C# How to eliminate duplicate values from comboBox?
我想从 OleDbDataReader 中删除重复项
应该很容易,但我正在旋转我的轮子。如有任何帮助,我们将不胜感激!
private void Database_Load(object sender, EventArgs e)
{
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "select * from PPAPdatabase";
command.CommandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(command);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
comboBox_Owner.Items.Add(reader["Owner"].ToString());
}
像这样重构您的 SQL 查询:
select distinct Owner from PPAPdatabase
而不是
select * from PPAPdatabase
您的代码中唯一需要的列是所有者,然后仅获取该列并对其应用 DISTINCT 子句以获得该列的不同值。
或替换以下行:
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
comboBox_Owner.Items.Add(reader["Owner"].ToString());
}
通过这个:
var owners = dt.AsEnumerable().Select(row => row["Owner"].ToString()).Distinct();
foreach(var owner in owners)
{
comboBox_Owner.Items.Add(owner);
}
在这个解决方案中,我们使用一个 SQL 查询您的数据库并重新使用结果来提取不同的所有者。
你可以这样做
while (reader.Read())
{
if (!comboBox_Owner.Items.Contains(reader["Owner"].ToString()))
comboBox_Owner.Items.Add(reader["Owner"].ToString());
}
我想从 OleDbDataReader 中删除重复项 应该很容易,但我正在旋转我的轮子。如有任何帮助,我们将不胜感激!
private void Database_Load(object sender, EventArgs e)
{
try
{
connection.Open();
OleDbCommand command = new OleDbCommand();
command.Connection = connection;
string query = "select * from PPAPdatabase";
command.CommandText = query;
OleDbDataAdapter da = new OleDbDataAdapter(command);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
comboBox_Owner.Items.Add(reader["Owner"].ToString());
}
像这样重构您的 SQL 查询:
select distinct Owner from PPAPdatabase
而不是
select * from PPAPdatabase
您的代码中唯一需要的列是所有者,然后仅获取该列并对其应用 DISTINCT 子句以获得该列的不同值。
或替换以下行:
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
comboBox_Owner.Items.Add(reader["Owner"].ToString());
}
通过这个:
var owners = dt.AsEnumerable().Select(row => row["Owner"].ToString()).Distinct();
foreach(var owner in owners)
{
comboBox_Owner.Items.Add(owner);
}
在这个解决方案中,我们使用一个 SQL 查询您的数据库并重新使用结果来提取不同的所有者。
你可以这样做
while (reader.Read())
{
if (!comboBox_Owner.Items.Contains(reader["Owner"].ToString()))
comboBox_Owner.Items.Add(reader["Owner"].ToString());
}