C# 比较列表c中两个元素的属性
我有一个列表:list NXRouteList=新列表 在此列表中,每个NXRoute都有一个属性: 目的地信号是一根弦 表示列表路径列表的路径=新列表; 我想根据属性DestinationSignal比较NXRouteList的元素,因此: 如果找到具有相同DestinationSignal值的两个元素 ==>在删除重复元素之前,我想将其路径列表中的元素添加到另一个元素的路径列表中,即具有相同DestinationSignal的元素C# 比较列表c中两个元素的属性,c#,list,C#,List,我有一个列表:list NXRouteList=新列表 在此列表中,每个NXRoute都有一个属性: 目的地信号是一根弦 表示列表路径列表的路径=新列表; 我想根据属性DestinationSignal比较NXRouteList的元素,因此: 如果找到具有相同DestinationSignal值的两个元素 ==>在删除重复元素之前,我想将其路径列表中的元素添加到另一个元素的路径列表中,即具有相同DestinationSignal的元素 作为c编程新手,我真的不知道如何实现这一点,我会选择NXRo
作为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。它的可能副本似乎作者并不真的想做一个自定义比较器,但只需从重复项中筛选他的输入,并将这些重复项包含的路径聚合到一个记录中。