DataTable 내 특정 컬럼의 값들을 배열로 얻고 싶다면?

LINQ (Language Integrated Query, 통합 질의 언어) 사용하기

 

 

 

위와 같은 DataTable '과일' 이 있다.

 

------------------------------------------------------------------------------------------------------------------

 

 

[ 1. 과일의 이름을 배열로 얻기 ]

 

- dt.Select().Select(x => x["이름"])              // 굳이 x 가 아니어도 상관없음

- dt.Select().Select(x => x["이름"])             // DataTable 내 특정 컬럼의 이름으로 직접 접근

- dt.Select().Select(x => x[1]                       // DataTable 내 특정 컬럼의 인덱스로 접근 (번호(0) / 이름(1) / 원산지(2))

- LINQ 로 얻은 배열은 Object[] 이기때문에 별도의 변환작업이 필요함 (Casting 작업)

 

1
2
3
           

           // Column  '이름 Row 14건을 stirng[]  반환

           object[] arrObj = dt.Select().Select(x => x["이름"]).ToArray();

           string[] arrStr = arrObj.Cast<string>().ToArray();

 
cs

 

 

 

 

[ 2. 과일의 이름을 배열로 얻기 (중복제외) ]

- dt.Select().Select(x => x["이름"]).Distinct().ToArray();  // 중복제외

1

2

3

            // Column  '이름 Row 14건을  중복을 제외한 값들을 

            // stirng[]  반환 (메론사과바나나딸기)

            object[] arrObj = dt.Select().Select(x => x["이름"]).Distinct().ToArray();

            string[] arrStr = arrObj.Cast<string>().ToArray();

cs

 

 

 

 

 

 

 

 

 

 

[ 3. 과일의 이름을 배열로 얻기 (중복제외 / 조회조건 추가) ]

- dt.Select().Where(r => r["원산지"].ToString() == "경기도").Select(x => x["이름"]).Distinct().ToArray();

=> "원산지" 에는 컬럼이름 또는 컬럼의 인덱스 값을 입력

=> "경기도" 에는 조건에 해당하는 또는 변수를 입력

 

 

1

2

3

            // Column  '이름 Row 14건을  중복을 제외한 값들  원산지가 경기도인 값들을 

            // stirng[]  반환 (메론사과딸기)

            object[] arrObj = dt.Select().Where(r => r["원산지"].ToString() == "경기도")

                                                    .Select(x => x["이름"]).Distinct().ToArray();

            string[] arrStr = arrObj.Cast<string>().ToArray();

Colored by Color Scripter

cs

 

 

 

 

 

 

 

 

 

 

 

 

[ 4. 과일의 이름을 배열로 얻기 (중복제외 / 조회조건 추가 / 순서정렬)

- dt.Select().Where(r => r["원산지"].ToString() == "경기도").OrderBy(p => p["이름"].Select(x => x["이름"]).Distinct().ToArray();

=> OrdeBy(p => p["이름"]                        // 이름 컬럼의 데이터들을 오름차순으로 정렬

=> OrderByDescending(p => p["이름"]   // 이름 컬럼의 데이터들을 내림차순으로 정렬

1

2

3

            // Column  '이름 Row 14건을  중복을 제외한 값들  원산지가 경기도인 값들을 

            // 오름차순하여 정렬  stirng[]  반환 (딸기메론사과)

            object[] arrObj = dt.Select().Where(r => r["원산지"].ToString() == "경기도")

                                                    .OrderBy(p => p["이름"]).Select(x => x["이름"]).ToArray();

            string[] arrStr = arrObj.Cast<string>().ToArray();

Colored by Color Scripter

cs

 

 

 

 

 

 

 

 

 

 

'[ C# ] > ㄴ Tips' 카테고리의 다른 글

[C#] Image To Byte Array, Byte Array To Image  (0) 2019.07.26
[C#] FTP 폴더 연동하기  (0) 2019.07.24
Posted by 오늘은 휴가
,