3

このインターフェイスを作成して、他の2つのコレクションの組み合わせコレクションとして使用します。

私のオブジェクト(ourCarsourTrucks)の両方に、私の車のコレクションとトラックのコレクションに関する情報が含まれています。

ただし、フィールドが同じではないので、2つを組み合わせた新しいコレクションを作成したいと思います。

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つの別々のタイプを1つのコレクションに結合しようとしており、両方が同じ基本クラスから継承しない限り、Concatを実行することはできません。

と呼ばれる基本クラスを作成してから、このクラスから派生することを検討してくださいVehicleourCarsourTrucks

それ以外の場合は、メソッドを使用して両方のコレクションを同じタイプに変換する必要がありますSelect

C#:

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