2012-10-26 4 views
1

요약 : VS가 런타임에만 알고있는 필드에 두 개의 데이터 테이블을 결합하는 방법은 무엇입니까? 런타임에 알려진 필드에 두 개의 데이터 테이블을 결합하십시오.

Dim result = From t1 In dt, t2 In dt2 _ 
        Where t1.Field <DateTime> ("timestamp") = t2.Field <DateTime> ("samplestamp") 
        Select t1, t2 

두 테이블이 동적으로 생성되기 때문에 이러한 테이블의 이름 만 런타임에 알려진 같은 솔루션이 있습니까.

긴 버전 :
코너 A에는 일부 데이터가있는 Historian 서버가 있습니다. 이 데이터는 주어진 시간 (주어진 프로 세스 (ses))에 대해 생성 된 모든 샘플을 나타냅니다.
코너 B에는 SQL 서버가있어서 데이터를 얻을 수 있습니다. 이 데이터는 주어진 시간 내에 실행 된 모든 배치를 나타냅니다.

프로젝트는이 2 개의 테이블을 차트 컨트롤에 표시해야합니다. 재미있는 부분에 대한 지금

. 런타임에만 열을 사용할 수 있다고 말할 수 있습니다. 1 회 배치가 실행되었는지 또는 100 회 수행되었는지를 알 수 없기 때문에 얼마나 많은 열을 받을지 모르겠습니다. 내가 아는 것은이 모든 "데이터"(런타임에서만 볼 수있는)가 2 개의 데이터 테이블에 배치 될 수 있다는 것입니다 (vb.net은 이전 프로젝트이기 때문에)
"데이터 테이블 1 (A 절)은 항상 첫 x 째 컬럼의 이름이 시간 소인 인 테이블에 있습니다. 어떻게이에이 두 datatables를 연결할 수 있어요 :
(그것은 또한 내가 여기 알고있는 유일한 열입니다) 그리고 나는 또한 datatable2 (코너 B)의 첫 번째 열은 sampletime 그래서 여기

이라는 것을 알고는 카운트 다운을 제공 주어진 이름을 하나의 화려한 데이터 테이블에 저장 한 다음 차트 컨트롤의 데이터 소스로 사용합니다. 따라서 문제는 해결됩니다.

나는 이것을 수행하고 SQL 서버에 하나의 SQL 테이블을 생성하려고 시도했다. 여기서 prolem은 트랜잭션을 좋아하지 않는 서버에서 작동하기 때문에 작동하지 않는다.

당신은 매개 변수로 두 DataTables를 취하는 방법이 테이블을 전달할 수 다음 Longversion 읽고 희망하지 않고 필요없이

답변

3

뭔가를 간과.

그런 다음 당신은 재사용 IEnumerable(Of Tuple(Of DataRow, DataRow)) 반환이 코드를 사용할 수 있습니다

Public Function getSomething(dt1 As DataTable, dt2 As DataTable) As IEnumerable(Of Tuple(Of DataRow, DataRow)) 
    Return From r1 In dt1 
      Join r2 In dt2 
      On r1.Field(Of DateTime)("timestamp") Equals r2.Field(Of DateTime)("samplestamp") 
      Select Tuple.Create(r1, r2) 
End Function 

익명 유형은 생성하는 방법 이외의 사용을 의미하지 않는다. 그래서 나는이 튜플 접근법을 사용 해왔다. 나는이 datatables의 병합을 시도에 결국 빠른 응답 에 대한

Dim rowInfos = getSomething(tbl1, tbl2) 
For Each rowInfo In rowInfos 
    Dim row1 = rowInfo.Item1 
    Dim row2 = rowInfo.Item2 
    Dim timestamp = row1.Field(Of DateTime)("timestamp") 
    Dim samplestamp = row2.Field(Of DateTime)("samplestamp") 
Next 
+0

감사합니다 팀을하고있는 한, 내가 표시 할 원하는 정확한 값을 얻을 재미 :이 방법으로 반환 값을 평가할 수 있습니다 . 현재 가장 깨끗한 방법이 아닐 수도 있습니다. 배치가 많을수록 (+ - 3 초/배치)로드하는 데 더 많은 시간이 소요되지만 시각적 인 측면이 있습니다. D 감사합니다. Robin – Schuere

관련 문제