C# 如何合并重复集合

C# 如何合并重复集合,c#,array-merge,C#,Array Merge,我正在尝试合并重复仪表,并已使用此方法: private IEnumerable<Meter> MergeDuplicateMeters(IEnumerable<Meter> meters) { var tmpMeters = meters.ToList(); var duplicates = tmpMeters .GroupBy(m => m.MeterUID) .Where(

我正在尝试合并重复仪表,并已使用此方法:

private IEnumerable<Meter> MergeDuplicateMeters(IEnumerable<Meter> meters)
    {
        var tmpMeters = meters.ToList();
        var duplicates = tmpMeters
            .GroupBy(m => m.MeterUID)
            .Where(grp => grp.Count() > 1)
            .ToList();
        foreach (var duplicate in duplicates)
        {
            var meter1 = duplicate.FirstOrDefault();
            var meter2 = duplicate.LastOrDefault();
            tmpMeters.Remove(meter1);
            tmpMeters.Remove(meter2);
            if (meter2.GsmData != null)
            {
                if (meter1.GsmData == null)
                {
                    meter1.GsmData = new List<GSMData>();
                }
                meter1.GsmData.AddRange(meter2.GsmData);
            }
            if (meter2.P2pMeterSession != null)
            {
                if (meter1.P2pMeterSession == null)
                {
                    meter1.P2pMeterSession = new List<P2PMeterSession>();
                }
                meter1.P2pMeterSession.AddRange(meter2.P2pMeterSession);
            }
            tmpMeters.Add(meter1);
        }
        return tmpMeters;
    }
专用IEnumerable仪表(IEnumerable仪表)
{
var tmpMeters=meters.ToList();
var duplicates=tmpMeters
.GroupBy(m=>m.MeterUID)
.Where(grp=>grp.Count()>1)
.ToList();
foreach(var重复中的重复)
{
var meter1=duplicate.FirstOrDefault();
var meter2=duplicate.LastOrDefault();
TMP仪表。拆除(仪表1);
TMP仪表。拆除(仪表2);
如果(meter2.GsmData!=null)
{
如果(meter1.GsmData==null)
{
meter1.GsmData=新列表();
}
meter1.GsmData.AddRange(meter2.GsmData);
}
if(meter2.P2pMeterSession!=null)
{
if(meter1.P2pMeterSession==null)
{
meter1.P2pMeterSession=新列表();
}
meter1.P2pMeterSession.AddRange(meter2.P2pMeterSession);
}
tmpMeters.Add(meter1);
}
返回TMP表;
}

问题是,这样我只能合并一次,但如果每次读取新列表时都要合并,该怎么办?

很抱歉,我忘了把它放进去。是C#你考虑过使用林克的
联合
方法吗?@NathanA在我看来是对的。以下是用于Union的MS文档和一些很好的示例-仪表可以包含不同的属性,例如一个仪表可以有一个CellID,而复制的仪表具有信号强度。工会将如何处理这件事@内森A