将两个List 合并到Linq中的一个List中
我有两个清单。 BeamElevations
和FloorElevations
。 如何将这些合并到Elevations
列表中并使用Linq根据它们的Elevation进行排序?
使用Concat
和OrderBy
var result = list1.Concat(list2).OrderBy(x => x.Elevation).ToList();
如果要删除重复项并获取一组唯一的元素,还可以使用Union
方法:
var result = list1.Union(list2).OrderBy(x => x.Elevation).ToList();
为了使其正常工作,您需要在类中覆盖Equals
和GetHashCode
方法。
最初你合并它们如下:
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()
- c#错误:无法识别的配置部分userSettings – 停止程序读取user.config?
- 是否有可能通过反思得到一个房产的私人制定者?
- 如何测试使用xUnit,SubSpec和FakeItEasy抛出的exception
- 如何处理实现多个接口的对象的Dtos?
- php转C#转换器
- 有没有更整洁的linq方式来’联合’单项?
- 为什么checkedlistbox没有数据源? 如何绑定到值列表?
- System.ServiceModel.AddressAccessDeniedException:HTTP无法注册URL http :: 8080
- 在数据库中存储大型文件会导致类型为“System.OutOfMemoryException”的exception