Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较列表c中两个元素的属性_C#_List - Fatal编程技术网

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

C# 比较列表c中两个元素的属性,c#,list,C#,List,我有一个列表:list NXRouteList=新列表 在此列表中,每个NXRoute都有一个属性: 目的地信号是一根弦 表示列表路径列表的路径=新列表; 我想根据属性DestinationSignal比较NXRouteList的元素,因此: 如果找到具有相同DestinationSignal值的两个元素 ==>在删除重复元素之前,我想将其路径列表中的元素添加到另一个元素的路径列表中,即具有相同DestinationSignal的元素 作为c编程新手,我真的不知道如何实现这一点,我会选择NXRo

我有一个列表:list NXRouteList=新列表

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

目的地信号是一根弦 表示列表路径列表的路径=新列表; 我想根据属性DestinationSignal比较NXRouteList的元素,因此:

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

==>在删除重复元素之前,我想将其路径列表中的元素添加到另一个元素的路径列表中,即具有相同DestinationSignal的元素


作为c编程新手,我真的不知道如何实现这一点,我会选择NXRouteList。您可以实现CompareTo来检查两个实例的DestinationSignal属性是否相等。

也许这段代码可以帮助您。此方法创建在DestinationSignal上没有重复项的NXROATES新列表。调用.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();
}

不幸的是,它不是一个代码生成器,但您可以想象,您必须进行2个循环,以便将列表中的每个项目和转发项目进行比较。在内部,您必须对您的属性进行比较。GroupBy+Select或IEqualityComparer。您应该找到具有不同列表对象的相关问题c@BrankVictoria我认为覆盖路径的Equals和GetHashCode,并在列表上使用简单的并集就足够了。你可以使用LINQ轻松做到这一点,google it abit。它的可能副本似乎作者并不真的想做一个自定义比较器,但只需从重复项中筛选他的输入,并将这些重复项包含的路径聚合到一个记录中。