[C# 문법] C# DataTable 필요한 컬럼 추출 및 중복 데이터 제거하기


안녕하세요.

 

오늘은 C# 문법에서 DataTable 다루는 방법에 대해서 알려드리려고 합니다.

 

그 중에서도, Linq를 이용해서 DataTable에서 필요한 컬럼들만 다시 추출하는 방법과 추출된 데이터에서 중복된 데이터를 제거하는 방법을 알려 드리려고 합니다.


 

바로 예제 코드를 통해서 알아 보도록 하겠습니다.

 

예제 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace TestDataTable

{

    class Program

    {

        static DataTable dt = null;

 

        static void Main(string[] args)

        {

            CreateColumnData(); //컬럼추가

            CreateAddRowData(); //Row 추가

 

            //필요한 컬럼 추출하여 새롭게 DataTable 생성

            DataTable nDt = dt.DefaultView.ToTable(falsenew string[] { "Name""Grade"});

 

            //컬럼 추출한 DataTable 출력

            Console.WriteLine("-----------추출한 컬럼들 DataTable 출력-----------");

 

            foreach(DataRow dataRow in nDt.Rows)

            {

                foreach(var item in dataRow.ItemArray)

                {

                    Console.WriteLine(item);

                }

            }

 

            Console.WriteLine();

            Console.WriteLine();

 

            //컬럼 추출한 DataTable 출력

            Console.WriteLine("-----------중복 제거한 DataTable 출력-----------");

 

            //중복 데이터 제거

            DataTable distinctTable = nDt.DefaultView.ToTable(true);

 

            for(int row = 0; row < distinctTable.Rows.Count; row++)

            {

                Console.WriteLine("이름 : {0}, 학년 : {1}",

                    distinctTable.Rows[row][0].ToString(),

                    distinctTable.Rows[row][1].ToString());

            }

        }

 

        /// <summary>

        /// DataTable 컬럼 추가

        /// </summary>

        public static void CreateColumnData()

        {

            //데이터테이블 객체 생성

            dt = new DataTable();

 

            dt.Columns.Add("Name"typeof(string));

            dt.Columns.Add("Age"typeof(string));

            dt.Columns.Add("Grade"typeof(string));

            dt.Columns.Add("PhoneNumber"typeof(string));

        }

 

        /// <summary>

        /// DataTable Row 추가

        /// </summary>

        public static void CreateAddRowData()

        {

            dt.Rows.Add("범범조조""28""3""1111");

            dt.Rows.Add("아이유""28""1""2222");

            dt.Rows.Add("범범조조""25""3""3333");

            dt.Rows.Add("쯔위""24""3""4444");

            dt.Rows.Add("나연""23""3""5555");

            dt.Rows.Add("범범조조""28""3""6666");

            dt.Rows.Add("태연""18""3""7777");

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과



위와 같이 Linq를 이용하여 필요한 컬럼들만 DataTable에서 추출해 보았고, 또 현재 범범조조가 중복되어 DataTable에 저장되어 있는데 중복제거하여 출력하니까 범범조조한명만 출력되는 것을 확인하실 수 있습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY