将两个List 合并到Linq中的一个List中

我有两个清单。 BeamElevationsFloorElevations 。 如何将这些合并到Elevations列表中并使用Linq根据它们的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(); 

使用List.AddRange

  list1.AddRange(list2); list1.OrderBy(l => l.Elevation); 
  List 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()