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

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

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

Есть
public interface ISpecificationItem
  {
     string Designation { get; set; }
     string Name { get; set; }
     Guid Guid { get; set; }
     EDocumentSection Type { get; }
  }
 
public enum EDocumentSection
  {
        [Description("Документация")]
        Docs,
 
        [Description("Детали")]
        Parts
  }
 
public class PartSpecification: ISpecificationItem
    {
        public string Designation { get; set; }
        public string Name { get; set; }
        public Guid Guid { get; set; }
        public EDocumentSection Type => EDocumentSection.Parts;
    }
    
     public class DocumentationSpecification : ISpecificationItem
    {
        public string Designation { get; set; } = String.Empty;
        public Guid Guid { get; set; } = Guid.NewGuid();
        public string Name { get; set; } = String.Empty;
        public EDocumentSection Type => EDocumentSection.Docs;
    }
Создаю коллекцию и заполняю её
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
Листинг программы
var distinct = from item in all
                group item by new { item.Name, item.Designation } into matches
                select matches.First();
 
all = new ObservableCollection<ISpecificationItem>(distinct);

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


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

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

8   голосов , оценка 4.125 из 5
Похожие ответы