wolfsor Ответов: 4

удалить дубликат из списка со списком


Я заполнил поле со списком данными из базы данных и хотел удалить повторяющиеся имена из списка элементов поля со списком. Вы можете дать мне код, чтобы сделать это?

4 Ответов

Рейтинг:
34

OriginalGriff

Это не обязательно так просто - это в определенной степени зависит от того, какими предметами вы заполнили свой ComboBox. Поскольку вы не можете просто установить массив элементов (он не предоставляет никакого публичного сеттера, только геттер), вы должны создать новый массив элементов, удалить дубликаты и установить его обратно в ComboBox:

List<object> list = new List<object>();
foreach (object o in myComboBox.Items)
    {
    if (!list.Contains(o))
        {
        list.Add(o);
        }
    }
myComboBox.Items.Clear();
myComboBox.Items.AddRange(list.ToArray());


Рейтинг:
26

Sandeep Mewara

Почему бы просто не извлечь уникальные из самой базы данных?
Нравится:

SELECT DISTINCT Names FROM MstNames


Если вы все еще хотите, то перед назначением источника данных отфильтруйте используемый datatable.
Чтобы узнать об этом больше, читайте здесь: MSDN: DataView.Свойство RowFilter[^]


JayantaChatterjee

Мои 5 за лучшее решение...

Рейтинг:
2

DamithSL

Как ответ Сандипа, лучший способ-это выбрать distinct, когда вы выбираете из базы данных.

если вы используете c# 3.0 или более позднюю версию, вы можете попробовать приведенный ниже код

var itemArry= myComboBox.Items.SelectMany(i => i).Distinct().ToArray();
myComboBox.Items.Clear();
myComboBox.Items.AddRange(itemArry);


JayantaChatterjee

Мои 4 для второго лучшего решения..

Рейтинг:
1

Member 14854584

В LINQ:
Оно собственное имеет свойство отчетливого()

//Данных в LINQ

List<data> list = new List<data>()
{
    Name ="Swaraj Ambekar",
    Name ="Swaraj Ambekar",
    Name ="Swaraj Ambekar",
    Name = "Forbes Technosys"
};

//Добавление источника данных в combobox с помощью linq
comboBox1.DataSource = list.Select(x => x.Name).Distinct().ToList();


CHill60

Решение 3 использует Linq, в частности Distinct() - на самом деле вы не добавили ничего нового в эту 8-летнюю тему