我有2种不同类型的收藏品 - 让我们称之为汽车和卡车。两者都共享基类车辆,其中包含属性乘客。
我想将它们合并到该属性订购的单个集合中。例如,合并汽车和卡车以及乘客订购。
我该怎么做?
答案 0 :(得分:3)
您可以使用Concat Linq方法组合两个列表。
Dim vehicles = cars.cast(Of Vehicle)().Concat(trucks.cast(Of Vehicle)())
Dim orderedVehicles = vehicles.OrderBy(Function(v) v.Passengers).ToList()
答案 1 :(得分:2)
如果您可以使用LINQ并且使用.NET 4,那么很简单:
Dim vehicles List<Vehicle> vehicles = _
cars.Concat(Of Vehicle)(trucks).OrderBy(Function(x) x.Passsengers).ToList()
如果您不使用.NET 4(因此无法利用通用协方差),则需要使用Cast
:
Dim vehicles = cars.Cast(Of Vehicle)() _
.Concat(trucks.Cast(Of Vehicle)) _
.OrderBy(Function(x) x.Passsengers) _
.ToList()
(对于瞬态C#主义道歉。)
...如果您不使用.NET 3.5,它会变得更加痛苦。 (可行,但很乱。)