-4

我目前正在研究 VB.NET。我遇到了一个问题,我有两个列表。列表有不同的对象类型;但是,两个列表都包含一个共同属性。这是我可以给出的关于这些列表的示例。

1) 驱动程序列表

ID     DriverName    DriverCity
1          A         Chicago
2          B         San Jose
3          C         New York

2) 预告片列表

ID       TrailerName
1            A
2            B
3            C
4            D
5            E
6            F

现在我需要一个新列表,其中包含所有带有驱动程序的预告片 IDS(示例 A)。我想比较两个列表并将缺少的项目添加到最终列表中。

4

1 回答 1

0

假设您无法在 dbms 中执行此操作,因为您根本没有使用数据库。还假设该ID财产是公共财产,并且您只想找到所有没有司机的拖车(根据 ID)。

您可以使用Enumerable.Except来查找设置的差异并Join获取原始预告片对象:

Dim trailerIDs = From t In trailers Select t.ID
Dim driverIDs = From d In drivers Select d.ID
Dim trailersWithoutDriverIDs = trailerIDs.Except(driverIDs)
Dim trailersWithoutDriver = From t In trailers 
                            Join id In trailersWithoutDriverIDs On t.ID Equals id
                            Select t
' now add missing drivers '
For Each trailer In trailersWithoutDriver 
    Dim driver = new Driver()
    driver.ID = trailer.ID
    driver.DriverName = trailer.TrailerName
    ' which city?? '
    drivers.Add(driver)
Next trailer
于 2012-09-14T22:01:16.093 回答