如果您有一个列表并希望合并具有相同Id字段的任何SomeObject的子列表,您将如何执行此操作?下面是该示例对象:C#合并来自父级别对象列表的子对象列表
public class SomeObject
{
public string Name { get; set; }
public int Id { get; set; }
public List<KeyPair> ValuePairs {get;set;}
}
public class KeyPair
{
public string Key { get; set; }
public string Value { get; set; }
}
这是样品创建一个模拟列表:
List<SomeObject> objects = new List<SomeObject>();
objects = new List<SomeObject>()
{
new SomeObject
{
Name="Rando Object 1",
Id=5,
ValuePairs=new List<KeyPair>()
{
new KeyPair
{
Key="TestKey1",
Value="TestValue1"
},
new KeyPair
{
Key="TestKey2",
Value="TestValue2"
}
}
},
new SomeObject
{
Name="Rando Object 2",
Id=5,
ValuePairs=new List<KeyPair>()
{
new KeyPair
{
Key="TestKey3",
Value="TestValue3"
},
new KeyPair
{
Key="TestKey4",
Value="TestValue4"
}
}
}
};
你需要什么的LINQ的排序或相关的查询做创建SomeObject的新列表基于任何具有匹配Id字段的顶级SomeObject进行合并;然后将其KeyPair列表组合到一个列表中。因此,您将拥有SomeObject Id = 5,然后从列表中的两个不同的以前的SomeObject中合并4个密钥对值。名称值可以从新对象中排除。
任何想法?非常感谢。
非常感谢您的帮助。 –