Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 18.12.2016
Сообщений: 1
1

Удалить одинаковые элементы из коллекции List(Product)

19.12.2016, 00:04. Показов 6520. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите , как можно удалить одинаковые элементы из коллекции типа List<Product> (одинаковыми можно считать экземпляры с совпадающим значением поля Id), содержащую различные экземпляры класса Product, но встречаются с одинаковыми полями.

C#
1
2
3
4
5
6
7
class Product {
 
public int Id {set; get;}
public string Name {set;get}
public string Desc {set;get}
 
}
P.S. Distinct не решил проблему. Решил очень кривым способом через цикл тройной вложенности, ищу более изящное решение, которое можно показать людям и не быть побитым палками
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2016, 00:04
Ответы с готовыми решениями:

Найти и удалить все одинаковые значения в коллекции файлов
Хочу найти и удалить все одинаковые файлы. Думаю мд5 и имя каждого файла записать в динамический...

Узнать, есть ли в коллекции одинаковые элементы
Доброго времени суток, есть коллекция List&lt;string&gt;. В ней набор элементов, а теперь вопрос, как...

Как удалить одинаковые значения из List?
Вот допустим есть 2 List в одном значения 1 3 5 7 а во втором 8 7 6 5 , нужно чтоб после действия...

С помощью LINQ проверить, есть ли в коллекции одинаковые элементы
Есть массив int mass3 = new int { 9, 9, 8, 5, 13, 3, 2, 6, 4, 0 };, не знаю, как с помощью LINQ...

2
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
19.12.2016, 00:28 2
merchezatter,

C#
1
2
3
4
5
6
7
8
9
10
11
12
var products = new Products()
            {
                new Product(1, "test1", "test1"),
                new Product(2, "test2", "test2"),
                new Product(3, "test3", "test3"),
                new Product(2, "test4", "test4")
            };
            var _products = products.Distinct(new Products());
            foreach (var product in _products)
            {
                MessageBox.Show(product.ToString());
            }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  public class Products : List<Product>, IEqualityComparer<Product>
    {
        public bool Equals(Product x, Product y)
        {
            if (Object.ReferenceEquals(x, y)) return true;
 
            if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
                return false;
 
            return x.Id == y.Id;
        }
 
        public int GetHashCode(Product obj)
        {
            if (Object.ReferenceEquals(obj, null)) return 0;
            int hashProductName = obj.Id == null ? 0 : obj.Id.GetHashCode();
            int hashProductCode = obj.Id.GetHashCode();
            return hashProductName ^ hashProductCode;
        }
    }
 
    public class Product 
    {
        public Product(int Id, string Name, string Desc)
        {
            this.Id = Id;
            this.Name = Name;
            this.Desc = Desc;
        }
        public int Id { get; set; }
        public string Name { get; set; }
        public string Desc { get; set; }
        public override string ToString()
        {
            return String.Format("id = {0}, name = {1}, desc = {2}", Id, Name, Desc);
        }
    }
Или короче вариант
C#
1
 var _products =  products.GroupBy(a => a.Id).Select(g => g.First()).ToList();
1
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
19.12.2016, 00:29 3
в таком случае перегрузите компаратор
https://msdn.microsoft.com/ru-... .110).aspx
0
19.12.2016, 00:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2016, 00:29
Помогаю со студенческими работами здесь

List, как удалить из коллекции значение что выбрал пользователь?
Дорогие мои товарищи, поняв что от массивов толку мало решил перейти в коллекцию List, возник...

C# List<T> как убрать одинаковые элементы
Естьpublic static List&lt;string&gt; sFileName = new List&lt;string&gt;(); , заполненный из базы данных. Как...

Как найти одинаковые элементы в списке List
Нужно найти все не уникальные числа последовательности, метод Distinct не приемлем так как нужно...

Отображение в listBox поля элемента из коллекции коллекций List<List<>>
Есть карта в pictureBox-е. На ней мышкой ставяться флажки(маркеры). Нужно хранить их в БД с...

Удалить одинаковые элементы
Есть предикат, заменяющий в исходном списке первое вхождение заданного значения другим,...

Удалить одинаковые элементы таблицы
Таблица задана как List&lt;List&lt;Integer&gt;&gt; table = ..., это нельзя менять по условию задачи, нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru