Ya he pensado en cómo voy a resolver esto lanzando mi propia solución, pero me pregunto si .NET ya tiene la funcionalidad para lo que Estoy tratando de lograr, si es así, prefiero usar algo incorporado.Combinar dos listas en C# y fusionar objetos con el mismo ID en un elemento de lista
Supongamos que tengo dos instancias de un objeto Widget
, llamémoslos PartA
y PartB
. La información de cada uno ha sido obtenida de dos servicios web diferentes, pero ambos tienen ID coincidentes.
PartA
{
ID: 19,
name: "Percy",
taste: "",
colour: "Blue",
shape: "",
same_same: "but different"
}
PartB
{
ID: 19,
name: "",
taste: "Sweet",
colour: "",
shape: "Hexagon",
same_same: "but not the same"
}
que desea combinar estos para crear la siguiente:
Result
{
ID: 19,
name: "Percy",
taste: "Sweet",
colour: "Blue",
shape: "Hexagon",
same_same: "but different"
}
Aviso cómo el valor de same_same
diferencia entre cada uno, pero consideramos que la Parte A del maestro, por lo que el resultado conserva el valor but different
.
Ahora Para complicar las cosas:
Supongamos que tenemos dos listas:
List<Widget> PartA = getPartA();
List<Widget> PartB = getPartB();
Ahora aquí hay algo de pseudocódigo que describe lo que quiero hacer:
List<Widget> Result = PartA.MergeWith(PartB).MergeObjectsOn(Widget.ID).toList();
Simplemente una manera no inteligente de hacerlo. Completamente manual: recorra cada lista y cree una nueva lista de objetos combinados, que también he fusionado manualmente (es decir, con codificación fija). Hace el trabajo, pero realmente apesta y será molesto de mantener. Estoy buscando una mejor manera. –