Сравните свойства двух элементов в списке c # - PullRequest
0 голосов
/ 31 января 2019

У меня есть список: List<NXRoute> NXRouteList = new List<NXRoute>();

Внутри этого списка каждый "NXRoute" имеет свойства:

  • DestinationSignal (это строка)
  • Path, представляющий список (List<Path> pathList = new List<Path>();)

Я хотел бы сравнить элементы NXRouteList в соответствии со свойством DestinationSignal, поэтому:

  • Если два элемента с одинаковым значением DestinationSignal найдены

    ==> перед удалением дублирующего элемента, я хотел бы добавить элементы его списка Path в Path список другого элемента (тот, который имеет тот же DestinationSignal

Будучи новичком в программировании на c #, я действительно не знаю, как реализовать это

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Может быть, этот код может помочь вам.Этот метод создает новый список NXRoutes без дубликатов на DestinationSignal.Вызов метода .SelectMany объединяет все пути для дублированных значений DestinationSignal в 1 новую запись NXRoute.

public List<NXRoute> GetAllNXRoutesWithoutDuplicates(List<NXRoute> list)
{
    var nxRoutesWithSameDestinationSignals = list.GroupBy(x => x.DestinationSignal);
    return nxRoutesWithSameDestinationSignals.Select(group => new NXRoute
    {
        DestinationSignal = group.Key,
        Path = group.SelectMany(x => x.Path).ToList()
    }).ToList();
}
0 голосов
/ 31 января 2019

Я бы внедрил IComparable для NXRouteList.Вы можете реализовать CompareTo, чтобы убедиться, что свойства DestinationSignal обоих экземпляров равны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...