удалить дубликат из списка со списком
Я заполнил поле со списком данными из базы данных и хотел удалить повторяющиеся имена из списка элементов поля со списком. Вы можете дать мне код, чтобы сделать это?
Это не обязательно так просто - это в определенной степени зависит от того, какими предметами вы заполнили свой 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());
Почему бы просто не извлечь уникальные из самой базы данных?
Нравится:
SELECT DISTINCT Names FROM MstNames
Мои 5 за лучшее решение...
Как ответ Сандипа, лучший способ-это выбрать distinct, когда вы выбираете из базы данных.
если вы используете c# 3.0 или более позднюю версию, вы можете попробовать приведенный ниже код
var itemArry= myComboBox.Items.SelectMany(i => i).Distinct().ToArray(); myComboBox.Items.Clear(); myComboBox.Items.AddRange(itemArry);
Мои 4 для второго лучшего решения..
В LINQ:
Оно собственное имеет свойство отчетливого()
//Данных в LINQ
List<data> list = new List<data>() { Name ="Swaraj Ambekar", Name ="Swaraj Ambekar", Name ="Swaraj Ambekar", Name = "Forbes Technosys" };
comboBox1.DataSource = list.Select(x => x.Name).Distinct().ToList();
Решение 3 использует Linq, в частности Distinct()
- на самом деле вы не добавили ничего нового в эту 8-летнюю тему