0

2 つのクラスがあり、各クラスから 2 つのプロパティを取得し、それらを別のコレクションに結合したい場合、linq を使用してこれを行うにはどうすればよいでしょうか?

2つのクラスは次のとおりです。

class guitars
    public ID
    public title
    public manufacturer
end class

class drums
    public ID
    public title
    public manufacturer
end class

私はこれを試しましたが、うまくいきませんでした:

   Private Interface Instruments
       Property ID As String
       Property name As String
   End Interface

   Dim results = From item In guitars _
        Select New Instruments() With _
                         { _
                             .ID = item.ID, _
                             .name = item.Title _
                         }

   Dim results2 = From item In drums _
        Select New Instruments() With _
                          { _
                              .ID = item.ID, _
                              .name = item.Title _
                          }

Dim combined = results + results2
4

2 に答える 2

4

それよりもはるかに簡単にすることができます。

両方のクラスにIInstrumentインターフェースを実装させるだけです。
その後、書くことができます

guitars.Cast(Of IInstrument)().Concat(drums)
于 2012-12-10T20:17:34.183 に答える
1

リスト内の重複を許可するかどうかに応じて、ユニオンまたは連結。

http://msdn.microsoft.com/en-us/library/vstudio/bb763068.aspx

Dim Combined = results.Union(results2) ' no duplicates allowed
Dim Combined = results.Concat(results2) 'duplicates allowed

編集: MatthewWhited の命令で Concat を追加しました。彼は完全に正しいです。リストは、MSDN によると異なります。

于 2012-12-10T20:17:59.287 に答える