.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
и 1DocumentationSpecification
Как такое сделать?Решение задачи: «.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);