2010-08-03 4 views
0

datatable에서 클래스 속성을 초기화 할 때 사용하는 것이 더 적합 할 것입니다.DataTables에서 일부 값을 초기화 할 때 우리는 무엇을 사용해야합니까?

즉 확장 성이 어떤 쉽게 처리 할 수있다 접근

name=dt.Rows[0][0] or name=dt.Rows[0]["Name"] 

. 현재 2 차 접근법을 사용하고 있지만 인덱스가 아니라 이름을 사용하면 UI 대신 저장 프로 시저 만 변경하면됩니다.

그러나 코드의 가독성을 떨어 뜨립니다. 그래서

답변

1

하나의 옵션 가야 무엇 사이에 뭔가하는 것입니다 : 당신에게 열 순서/정의를 변경하는 경우 변경 장소를 제공한다는

private const int NameColumn = 0; 
... 
name = dt.Rows[0][NameColumn]; 

을뿐만 아니라에서 읽을 수있는 코드를 제공합니다 접근 지점. UI 코드와 저장 프로 시저를 동시에 변경해야하는 문제를 잘 모르겠습니다. SP가 효과적으로 공용 인터페이스를 변경하는 경우 으로 UI 코드를 변경해야합니다. 그러나이 방법을 사용하면 변경 사항의 고통을 줄일 수있을뿐 아니라 코드에 마법의 값을 버리지 않을 수 있습니다.

는 (당신은 또한 그것은 당신의 상황에 적절하지 않을 수 있습니다. 강력하게 형식화 된 데이터 집합을 고려 ... 또는 엔티티 프레임 워크와 같은 비 DataTable 데이터 솔루션으로 이동 할 수 있습니다,하지만 고려 가치가 있어요.)

+0

이는 TypedDataSets쪽으로 다소 이동한다는 것을 의미합니다. 너무 존 이니? –

+0

@Shantanu : 꼭 그런 것은 아닙니다. 특정 유형의 열에 액세스하는 것만으로도 어떤 유형을 처리 할지를 변경하지 않습니다. 이제는 강력하게 형식화 된 데이터 집합으로 이동하는 것이 적절한 단계 일 수 있지만 분명히 * 가질 필요는 없습니다. –

+0

즉, 각 열 10 개가있는 데이터 세트 당 10 개의 테이블을 고려하면 각 열의 필드를 오버 헤드로 간주하지 않을 것이라고 생각하십니까? – devnull

1

열 이름을 사용하면 더 쉽게 읽을 수 있습니다. 저장 프로 시저를 변경하려는 경우 열 인덱스를 사용하면 열의 수나 순서가 변경 될 수 있습니다.

0

숫자 인덱스를 사용하는 것이 문자열 인덱스를 반복해서 사용하는 것보다 빠릅니다. 다음과 같이 테이블 행을 반복하기 전에 런타임에 숫자 인덱스를 한 번 계산할 수 있습니다.

int indexName = dt.Columns.IndexOf("Name") 
관련 문제