Już myślałem o tym, jak mam to rozwiązać, przechodząc własnym rozwiązaniem, ale zastanawiałem się, czy .NET ma już funkcjonalność Próbuję się z tym pogodzić - jeśli tak, wolę użyć czegoś wbudowanego.Scal dwie listy w języku C# i scal obiekty z tym samym identyfikatorem w jeden element listy
Załóżmy, że mam dwa wystąpienia obiektu Widget
, nazwijmy je: PartA
i PartB
. Informacje z każdej z nich zostały zebrane z dwóch różnych usług internetowych, ale obie mają pasujące identyfikatory.
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"
}
Chcę połączyć je tworzyć następujące:
Result
{
ID: 19,
name: "Percy",
taste: "Sweet",
colour: "Blue",
shape: "Hexagon",
same_same: "but different"
}
zauważyć, jak wartość same_same
różni się między sobą, ale uważamy parta mistrz, więc wynik zachowuje wartość but different
.
Teraz komplikować sprawy:
Załóżmy, że mamy dwie listy:
List<Widget> PartA = getPartA();
List<Widget> PartB = getPartB();
Teraz tutaj jest jakiś pseudokod opisując to, co chcę zrobić:
List<Widget> Result = PartA.MergeWith(PartB).MergeObjectsOn(Widget.ID).toList();
To tylko niesympatyczny sposób robienia tego. Całkowicie ręcznie: przechodź do każdej listy i twórz nową listę scalonych obiektów - które również zostały scalone ręcznie (tzn. Zakodowane na sztywno). Wykonuje zadanie, ale naprawdę jest do bani i będzie irytujące w utrzymaniu. Szukam lepszego sposobu. –