2013-02-21 5 views
1

DataTable을 다른 DataTable의 값으로 검색하려고하는데 LINQ를 사용하지만 진행 방법은 아직 없습니다 ... 어떻게해야합니까?다른 테이블의 값이있는 DataTable 검색

아래의 예제에서 i 검색은 table이고, 검색은 하나만있는 PlTable입니다. 그리고 에서 모든 행을 검색해야하는데 Name 필드에 Name 필드의 하나 이상의 문자열이 PlTable의 행에 포함되어 있어야합니다. .Contains

+0

행 (0)의 내용은 무엇입니까? 아니면 'ePlTable'에 이름이 있는지 확인하고 싶습니까? (게다가, 나는 숫자 인덱스가 아닌 인덱스로 문자열 (키)을 사용하는 것을 선호한다. 열의 순서가 바뀌면 오류가 발생하기 쉽다.) – Styxxy

답변

1

가 확실히 작동하지 않습니다 인수로 String을 원하는대로 .Contains이 exatly 문제의 주장

로 문자열을 원하는대로

Dim ePlTable As IEnumerable(Of DataRow) = PlTable.AsEnumerable() 

Dim found = From row In table.AsEnumerable 
      Where row(0).Contains(ePlTable) 
      Select row 
Return found.CopyToDataTable.Rows 

확실히 그렇게, 작동하지 않습니다 강하게 입력 된 Field 확장자 메서드를 사용하여 올바른 유형으로 캐스팅하고 Enumerable.Any을 사용하여이에 하나 이상의 문자열이 포함되어 있는지 확인합니다.:

Dim strings = From row In PlTable Select row.Field(Of String)(0) 
Dim found = From row In table.AsEnumerable 
      Where strings.Any(Function(s) row.Field(Of String)("Name").Contains(s)) 
      Select row 
Return found.CopyToDataTable()