0

如果我有 2 个类并且想从每个类中获取 2 个属性,并将它们组合成一个单独的集合,那么如何使用 linq 来完成?

说这两个类是:

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

Union 或 Concat 取决于您是否希望在列表中允许重复。

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 回答