比较列表C#中两个元素的属性

时间:2019-01-31 15:16:01

标签: c# list

我有一个列表:List<NXRoute> NXRouteList = new List<NXRoute>();

在此列表中,每个“ NXRoute”都有一个属性:

  • DestinationSignal(是一个字符串)
  • Path,代表一个列表(List<Path> pathList = new List<Path>();

我想根据属性NXRouteList比较DestinationSignal的元素,所以:

  • 如果找到两个具有相同DestinationSignal值的元素

    ==>在删除重复元素之前,我想将其Path列表的元素添加到另一个元素(具有相同{{1}的元素)的Path列表中}

对C#编程很陌生,我真的不知道该怎么实现

2 个答案:

答案 0 :(得分:1)

也许此代码可以为您提供帮助。此方法创建新的NXRoute列表,在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();
}

答案 1 :(得分:0)

我会implement IComparableNXRouteList。您可以实施CompareTo来检查两个实例的DestinationSignal属性是否相等。