[C# 문법] DataTable Linq 이용하여 데이터 조회 하는 방법



 

안녕하세요~~

 

오늘은 C#문법에서 DataSet에 저장되어 있는 데이터를, Linq를 이용하여 사용자가 원하는 대로 데이터를 조회하는 방법에 대해서 알려드리고자 합니다.

 

Linq를 저도 지금 공부중이고, 공부를 하면서 그때그때 익히고 사용한 것을 정리하는 것이므로, 조금은 내용이 부족할 수도 있지만..도움이 되셨으면 좋겠어요ㅎㅎ


시나리오


1.    오라클 DB 연동 후, Student 테이블을 조회한 후, 조회된 데이터를 DataSet에 저장

2.    새로운 DataTable 객체를 생성

3.    생성된 DataTable 객체에 Linq를 이용하여 학생 이름이 범범조조인 학생 출력하기


 

위의 시나리오 대로 예제코드를 작성해 보도록 하겠습니다.

 

오라클 연동은 앞에서 포스팅 하였기 때문에, 따로 설명 드리지는 않겠습니다.

 

대신 아래 URL 남겨 놓을게요!ㅎㅎ


오라클 연동 URL https://afsdzvcx123.tistory.com/245?category=784688

예제 코드


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

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Xml.Linq;

 

namespace test

{

    class Program

    {

        public enum COLUMNS { SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE};

        public static DataSet ds = new DataSet();

 

        static void Main(string[] args)

        {

            OracleDBManager dbManager = new OracleDBManager();

 

            Console.WriteLine("데이터 베이스 연결 ...");

 

            if (dbManager.GetConnection() == false)

            {

                Console.WriteLine("데이터 베이스 접속 연결 실패!!!!!");

                return;

            }

 

            Console.WriteLine("데이터 베이스 접속 성공!!!");

 

            GetData(); //SELECT문으로 데이터 조회  DataSet 저장

 

            Console.WriteLine();

            Console.WriteLine();

            Console.WriteLine();

 

            //DataTable Linq 이용하여 Filter

            DataTable dt = new DataTable();

 

            //이름이 "범범조조 학생 Linq 이용하여 조회

            dt = ds.Tables[0].AsEnumerable()

                .Where(Row => Row.Field<string>("SCHOOL_NO"== "1" &&

                             Row.Field<string>("NAME"== "범범조조")

                .OrderByDescending(Row => Row.Field<string>("SCORE"))

                .CopyToDataTable();

 

 

            //DataTable 출력

            for(int i = 0; i < dt.Rows.Count; i++)

            {

                for (int col = 0; col < dt.Columns.Count; col++)

                {

                    Console.Write(" {0} ", dt.Rows[i][col].ToString());

                }

                Console.WriteLine();

            }

 

        }

 

        /// <summary>

        /// 쿼리문 작성하여

        /// 데이터베이스에 저장되어 있는 데이터

        /// 가져오는 메서드

        /// </summary>

        public static void GetData()

        {

            OracleDBManager dbManager = new OracleDBManager();

 

            string query = string.Empty;

            query = @"

                SELECT SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE

                FROM WIN.STUDENT";

 

            dbManager.ExecuteDsQuery(ds, query);

        }

    }

}

 

Colored by Color Scripter

cs

 

DataSet에 저장된 Student 테이블 데이터




Linq 조회 결과




실행 결과



이처럼, Linq를 통하여 DataSet에 저장되어 있는 학생들의 정보에서 이름이 범범조조인 학생만 조회되어 출력된 것을 확인하실 수 있습니다!

 

Linq 문법이 아직은 익숙하지 않지만..계속 연습을 해서 손에 익숙해 지도록 많은 노력을 해야겠어요..^^

 

부족한 글 읽어 주셔서 감사합니다ㅎㅎ


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY