2014-04-21 2 views
1

나는 vb.net에서 일하고있다. 나는 사용자 정의 클래스의 두 가지 일반 목록을 가지고 있습니다.이 클래스를 학생이라고 부를 수 있습니다.일반 목록 비교?

나는 일반적인 목록의 학생들에게 제공하는 데이터 세트를 제공하는 데이터베이스에 대한 호출을하고 있습니다. 학생은 성, 성, 전화 번호, 주소 등과 같은 속성을 갖게됩니다.

그런 다음 외국 웹 API에 전화를 걸어 다른 일반적인 학생 목록 (동일한 클래스)으로 데이터를 다시 정렬합니다.

이제 웹 API 호출에서 얻은 것과 데이터베이스 측면에 차이가 있다면 하나를 비교하려고합니다. 이 같은 일반적인 클래스 목록을 다른 객체와 비교할 수있는 쉬운 방법이 있습니까? 항목의 순서를 확신 할 수 없기 때문에 직접 비교할 수 없습니다. 그러나 일반적인 목록을 반복하고 다른 일반 목록에서 일치하는 항목을 검색하는 것 이외에 분명한 방법이 있습니다.

그들을 호출 할 수 있습니다 ... 이러한 가능성이 있습니다 DatabaseList

APIList :

  1. 이 데이터베이스에 존재하지만 API는
  2. 이 API에는 있지만 데이터베이스
  3. 이 모두 존재하지만 이 둘 사이에 일치하지 않음

나는 3 개의 새로운 목록으로 끝나서 적절한 조치를 취할 수있게되었습니다. 지금 당장이 방법을 끄집어 낼 수있는 유일한 방법은 목록을 반복하는 것이고 그것은 나쁜 생각처럼 보입니다. 더 좋은 방법이 있어야합니다.

+0

같은 데이터의 make make 3 목록보다는 학생 클래스에 상태 및 결과를 저장하는 속성 (또는 둘)이 포함될 수 있습니다. 결과는 LINQ를 사용하여 계산할 수 있습니다. – Plutonix

+0

물론 ... 항목을 추적 할 수있는 방법 중 하나는 괜찮지 만 질문은 추적하는 방법보다는 해당 항목을 찾는 방법에 관한 것입니다. 우리가 문자열의 일반적인 목록을 비교했다면 그 간단한 .contains() 또는 indexof()하지만 거대한 루프를 피하려고 클래스의 속성이 많이 있기 때문에. – user1224074

+0

확실히 2 개의 데이터 소스에는 StudentID와 같은 공통 키가 있습니까? 그렇다면 사전을 사용하여 webStudent 레코드가'ContainsKey'와 일치하거나 localDBList에 있는지 확인하십시오. 그렇지 않은 경우 WebOnly 상태로 추가하십시오. 네, 루핑 중이지만 한 번만 세 가지 가능성을 결과 코드로 하나의 목록으로 가져옵니다. 그러면 LINQ는이 상태 또는 결과와 일치하는 학생 (또는 ID 목록)을 반환 할 수 있습니다. – Plutonix

답변