3

我已经创建了这个接口来用作其他 2 个集合的组合集合。

我的两个对象(ourCarsourTrucks)都包含有关我的汽车收藏和卡车收藏的信息。

但是字段不一样,所以我想创建一个新集合来将两者结合起来。

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

3 回答 3

5

首先,您需要确保您的ourCarsourTrucks类型都实现了新carTruckCombo类型。完成后,您可以使用如下代码:

Dim combinedResults = cars.Cast(Of carTruckCombo).Concat(trucks.Cast(Of carTruckCombo))
于 2012-12-07T20:13:28.787 回答
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}));
于 2012-12-07T20:11:59.627 回答
3

您可以使用该Concat方法,但是(请在否决之前阅读:))您正在尝试将 2 个单独的类型组合到一个集合中,除非它们都继承自同一个基类,否则您不能执行 Concat。

您可能会考虑创建一个名为的基类Vehicle,然后从该类派生ourCars和派生。ourTrucks

否则,您必须使用一种Select方法将两个集合转换为相同的类型。

C#:

combinedResults =  cars.Concat(trucks);
于 2012-12-07T20:10:27.937 回答