.NET 4.x Объединение одинаковых элементов коллекции - C#

Узнай цену своей работы

Формулировка задачи:

Есть
Листинг программы
  1. public interface ISpecificationItem
  2. {
  3. string Designation { get; set; }
  4. string Name { get; set; }
  5. Guid Guid { get; set; }
  6. EDocumentSection Type { get; }
  7. }
  8. public enum EDocumentSection
  9. {
  10. [Description("Документация")]
  11. Docs,
  12. [Description("Детали")]
  13. Parts
  14. }
  15. public class PartSpecification: ISpecificationItem
  16. {
  17. public string Designation { get; set; }
  18. public string Name { get; set; }
  19. public Guid Guid { get; set; }
  20. public EDocumentSection Type => EDocumentSection.Parts;
  21. }
  22. public class DocumentationSpecification : ISpecificationItem
  23. {
  24. public string Designation { get; set; } = String.Empty;
  25. public Guid Guid { get; set; } = Guid.NewGuid();
  26. public string Name { get; set; } = String.Empty;
  27. public EDocumentSection Type => EDocumentSection.Docs;
  28. }
Создаю коллекцию и заполняю её
Листинг программы
  1. ObservableCollection<ISpecificationItem> all = new ObservableCollection<ISpecificationItem>();
Могут встречаться одинаковые элементы по Name и по Designation Надо: слить одинаковые айтемы в один. К примеру, в коллекции есть 3 элемента. 2 элемента

PartSpecification

с Name = "Деталька" и Designation = "АБВГ.1000" и 1 элемент

DocumentationSpecification

с Name="хелп" и Designation = "буклет" В результате слияния в коллекции должно остаться 2 элемента: 1

PartSpecification

и 1

DocumentationSpecification

Как такое сделать?

Решение задачи: «.NET 4.x Объединение одинаковых элементов коллекции»

textual
Листинг программы
  1. var distinct = from item in all
  2.                 group item by new { item.Name, item.Designation } into matches
  3.                 select matches.First();
  4.  
  5. all = new ObservableCollection<ISpecificationItem>(distinct);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы