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(); |
[ 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(); |
[ 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(); |
'[ C# ] > ㄴ Tips' 카테고리의 다른 글
[C#] Image To Byte Array, Byte Array To Image (0) | 2019.07.26 |
---|---|
[C#] FTP 폴더 연동하기 (0) | 2019.07.24 |