2012-09-14 3 views
-4

현재 VB.NET에서 작업 중입니다. 나는 두 가지 목록을 가지고있는 문제에 봉착 해있다. 목록에는 다른 개체 유형이 있습니다. 그러나 두 목록에는 하나의 공통 속성이 있습니다. 다음은 내가 그 목록에 대해 줄 수있는 예입니다.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 

는 지금은) 드라이버 (예 : A를 모든 트레일러 IDS가 포함 된 새 목록이 필요합니다. 두 목록을 비교하고 누락 된 항목을 최종 목록에 추가하려고합니다.

+3

을 기반으로하는 일치를? 데이터베이스에서 목록을 채우는 경우 목록을 반복하는 대신 새 쿼리를 사용하는 것이 좋습니다. – PatFromCanada

+1

예고편에 드라이버 이름이 붙지 않는 한, 예고편을 드라이버에 연결하는 데 데이터에 아무 것도 표시되지 않습니다. 그렇다면 실제로는 데이터베이스 디자인이 좋지 않습니다. 예고편 ID를 드라이버 ID에 매핑하는 교차 테이블을 찾고, 예고편 테이블에 DriverID 필드를 추가하거나, 이름을 기반으로하지 않는 경우 TrailerID를 Driver 테이블에 추가해야합니다. –

+2

"누락 된 항목"이 무엇을 의미하는지 실제로 알지 못합니다. 두 목록에는 서로 다른 개체 유형이 포함되어 있으므로 각 목록이 다른 항목의 "누락 된"이유를 나타냅니다. – Phong

답변

0

데이터베이스를 전혀 사용하지 않아 dbms에서 수행 할 수 없다고 가정합니다. 또한 ID 속성이 공통 속성 인이고 드라이버없이 모든 예고편을 찾고 싶다고 가정합니다 (ID에 따라).

당신은 차 집합을 찾을 Enumerable.Except을 사용할 수 있으며 Join 원래 트레일러 개체를 얻을 수 있습니다 : 당신이 ID의 값에

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 
관련 문제