2013-03-21 3 views
1

개체 배열과 문자열 배열의 교집합에서 개체 컬렉션을 어떻게 구합니까?VB.NET Linq 개체 반환 개체 반입

Public Class Person 
    Public lastName As String 
    Public firstName As String 
End Class 

Public Class Form1 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim personArray As List(Of Person) 
     Dim p1 As Person = New Person("Bill", "Fitch") : personArray.Add(p1) 
     Dim p2 As Person = New Person("Randy", "Roberts") : personArray.Add(p2) 
     Dim p3 As Person = New Person("Miles", "Johnson") : personArray.Add(p3) 
     Dim p4 As Person = New Person("Sandy", "Smith") : personArray.Add(p4) 

     Dim arrayNames() As String = {"Jones", "Roberts", "Smith", "Teague"} 

     'The Linq code 
     Dim query = From myPerson In personArray 
        Where myPerson.lastName = arrayNames 
        Select myPerson 
    End Sub 
End Class 

는 물론의 LINQ 코드가 작동하지 않습니다하지만 Linq에가하는 예를 들면 다음과 같습니다

, 나는 객체 (클래스 사람)의 수집 및 이름의 문자열 배열을 가지고?

Dim query = From myPerson In personArray 
       Where arrayNames.Contains(myPerson.lastName) 
       Select myPerson 

답변

2

당신이 사용할 수있는이 포함

Dim query = From p As Person In personArray 
      Join lastName As String In arrayNames On p.lastName Equals lastName 
      Select p 

을 그리고 여기 당신이 그것을 테스트하려는 경우, 전체 코드입니다 (나는 약간 코드를 변경하는 컴파일되는지 확인하십시오.)

Public Class Form1 
    Public Class Person 
    Public lastName As String 
    Public firstName As String 
    Sub New(firstName As String, lastName As String) 
     Me.lastName = lastName 
     Me.firstName = firstName 
    End Sub 
    End Class 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Dim personArray As New List(Of Person)({ 
     New Person("Bill", "Fitch"), 
     New Person("Randy", "Roberts"), 
     New Person("Miles", "Johnson"), 
     New Person("Sandy", "Smith") 
    }) 

    Dim arrayNames() As String = {"Jones", "Roberts", "Smith", "Teague"} 

    Dim query = From p As Person In personArray 
       Join lastName As String In arrayNames On p.lastName Equals lastName 
       Select p 
    End Sub 
End Class 
+0

고마워요! 때로는 단지 찌르기 만하면됩니다! – ForEachLoop

0

당신은 조인을 사용할 수 있습니다 :