我已创建此界面,以用作其他2个集合的组合集合。
我的两个对象(ourCars
和ourTrucks
)都包含有关我的汽车收藏和卡车收集的信息。
但是字段不一样,我想创建一个新的集合,将两者结合起来。
Private Interface carTruckCombo
Property ID As String
Property make As String
Property model As String
End Interface
Dim cars As IEnumerable(Of ourCars) = Enumerable.Empty(Of ourCars)()
Dim trucks As IEnumerable(Of ourTrucks) = Enumerable.Empty(Of ourTrucks)()
现在这就是我被困的地方......我现在该怎么做?
Dim combinedResults As IEnumerable(Of carTruckCombo)
答案 0 :(得分:5)
首先,您需要确保ourCars
和ourTrucks
类型实施新的carTruckCombo
类型。完成后,您可以使用以下代码:
Dim combinedResults = cars.Cast(Of carTruckCombo).Concat(trucks.Cast(Of carTruckCombo))
答案 1 :(得分:4)
var combinedResults =
cars.Select(c=>new carTruckCombo{ID=c.ID,make=c.make,model=c.model})
.Union(tracks.Select(t=>new carTruckCombo{ID=t.ID,make=t.make,model=t.model}));
答案 2 :(得分:3)
你可以使用Concat
方法, HOWEVER(请在downvote之前阅读:) 你试图将2个单独的类型组合成一个集合,除非它们都从同一个基础继承那么你不能做Concat。
您可以考虑创建一个名为Vehicle
的基类,然后从此类派生ourCars
和ourTrucks
。
否则,您必须使用Select
方法将两个集合转换为相同的类型。
C#:
combinedResults = cars.Concat(trucks);