[C# 문법] DataTable 내 특정 컬럼의 값들을 배열로 얻기(LINQ)


안녕하세요.

오늘은 C# 문법에서 DataTable 내 특정 컬럼의 값들을 배열로 얻는 방법을 알려드리고자 합니다.


 

C#에서 DataTable 내 특정 컬럼의 값들을 배열로 얻고 싶으시다면, 여러가지 방법들이 있겠지만 오늘은 LINQ를 이용하여 배열 값들을 구해 보도록 할게요.

 


위와 같은 과일’ DataTable이 있습니다.

 

이제 위의 DataTable의 내용을 LINQ를 통해 하나씩 알맞게 가져 오도록 하겠습니다.

 

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


- dt.Select().Select(x=>x[“이름”])  //굳이 x가 아니어도 된다.

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

- dt.Select().Select(x=>x[1])   //DataTable 내 특정 컬럼의 인덱스로 접근

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



 

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


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



 

과일의 이름을 배열로 얻기 (중복제거 / 조회조건 추가)


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

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

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



 

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


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

- OrderBy(p=>p[“이름”]) // 이름 컬럼의 데이터를 오름차순으로 정렬

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


 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY