如果您有一個列表並希望合併具有相同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個密鑰對值。名稱值可以從新對象中排除。
任何想法?非常感謝。
非常感謝您的幫助。 –