<object> 在 Linq 中将两个列表合并为一个列表



我有两个列表。 BeamElevations<Elevation>FloorElevations<Elevation> .如何使用 Linq 将它们合并到Elevations<Elevation>列表中并根据其提升对它们进行排序?

使用 ConcatOrderBy

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

如果要删除重复项并获得一组唯一的元素,也可以使用Union方法:

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

为了使它正常工作,您需要覆盖类中的EqualsGetHashCode方法。

最初,您可以像下面这样合并它们:

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

然后

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

或一步到位:

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

实现此目的的另一种方法是使用Concat

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

Use List.AddRange

   list1.AddRange(list2);
   list1.OrderBy(l => l.Elevation);
 List<Elevation> Elevations= FloorElevations.Concat(BeamElevations).ToList();

如果有任何开发人员可能正在寻找 VB.NET 的解决方案,那么您可以:

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()

相关内容

  • 没有找到相关文章

最新更新