2009-06-26 7 views
0

DataTable 행에 문제가 있습니다. 일련의 행 값 중 하나가 집합에있는 행을 일련의 행에서 가져 오려고한다는 생각이 들었습니다. guids. 그러나 select() 함수에서 guid/string 비교 오류가 나타납니다.DataTable.Select ("ColumnName IN") Guid 오류

Dim sb As New StringBuilder 
For Each Row As DataRow In dtData.Rows 
    sb.Append("'") 
    sb.Append(Row("SomeField").ToString) 
    sb.Append("', ") 
Next 


gvDataView.DataSource = dtSubData.Select("SomeField IN (" & sb.ToString.TrimEnd(", ".ToCharArray) & ")") 

을하지만, SomeField는 고유 식별자 열이있는 한, dtSubData.select이 가이 드 및 문자열 비교에 대한 오류를 던지고 다음과 같이

코드입니다. 이를 염두에두고이 문제를 해결할 수있는 방법이 있습니까?

답변

0

.NET 3.5 및 System.Data.DataSetExtensions.dll을 사용할 수 있으면 여기에서 LINQ를 이용할 수 있습니다. 먼저, dtData의 값으로 HashSet을 채 웁니다.

var items = from row in dtData.AsEnumerable() 
      select row.Field<Guid>("SomeField"); 
var validValues = new HashSet<Guid>(items); 

C#은 사과하지만 VB LINQ 구문은 약간 불안정합니다. 어쨌든 유효한 ID의 HashSet을 가져 오면 두 번째 DataTable의 데이터가 해당 집합에 포함되어 있는지 효율적으로 테스트 할 수 있습니다.