wake-up-neo.net

Füge zwei List <object> in einer Liste in Linq zusammen

Ich habe zwei Listen. BeamElevations<Elevation> und FloorElevations<Elevation>. Wie kann ich diese in Elevations<Elevation> list zusammenführen und sie anhand ihrer Höhenlage mit Linq anordnen?

12
Vahid

Verwenden Sie Concat und OrderBy

var result = list1.Concat(list2).OrderBy(x => x.Elevation).ToList();

Wenn Sie Duplikate entfernen und einen eindeutigen Satz von Elementen erhalten möchten, können Sie auch die Union -Methode verwenden:

var result = list1.Union(list2).OrderBy(x => x.Elevation).ToList();

Damit es ordnungsgemäß funktioniert, müssen Sie die Equals- und GetHashCode-Methoden in Ihrer Klasse überschreiben.

27
Selman Genç

Anfangs mischen Sie sie wie folgt zusammen:

Elevations=BeamElevations.Union(FloorElevations)
                         .ToList();

Dann

Elevations=Elevations.OrderBy(x=>x.Elevation)
                     .ToList();

Oder in einem Schritt:

Elevations=BeamElevations.Union(FloorElevations)
                         .OrderBy(x=>x.Elevation)
                         .ToList();

Eine andere Möglichkeit, dies zu erreichen, wäre die Verwendung von Concat.

Elevations=BeamElevations.Concat(FloorElevations)
                         .OrderBy(x=>x.Elevation)
                         .ToList();
4
Christos
 List<Elevation> Elevations= FloorElevations.Concat(BeamElevations).ToList();
2
Sajeetharan

Verwenden Sie List.AddRange

   list1.AddRange(list2);
   list1.OrderBy(l => l.Elevation);
2
huMpty duMpty

Wenn es Entwickler gibt, die in VB.NET nach einer Lösung suchen, gehen Sie hier:

Dim list1 As List(Of MyObject)
Dim list2 As List(Of MyObject)
Dim mergedAndSortedList As List(Of MyObject)

mergedAndSortedList = (From obj In list1.Union(list2)
                       Order By obj.MyPropertyToSortOn
                       Select obj).ToList()
0