본문 바로가기

.Net/Visual Studio 2008

.Net Framework 3.5 Note

.Net Framework 3.5
Visual Studio 2008
2008. 6. 23.
안혁
http://hyok.kr


A.     코드 조각 사용

       i.         Ctrl + k, x

      ii.         Visual C# 선택

사용자 삽입 이미지

     iii.         코드 조각 선택

사용자 삽입 이미지

     iv.         TAB 키를 사용하여 수정

사용자 삽입 이미지

      v.         코드 조각 이름을 직접 입력 후 TAB 키를 눌러도 동일한 기능 작동

B.     Auto Property

       i.         프로퍼티가 단순히 값을 넣고 가져오는 작업만 하도록 하는 기능을 다음과 같이 정의

public string Name { get; set; }

public int Age { get; set; }

Ø  get, set을 정의하지 않음

      ii.         컴파일 시 각각에 연결될 변수가 자동으로 생성 à private 변수 필요 없음

     iii.         사용 예

Customer obj = new Customer() { Name = "홍길동", Age = 10 };

Ø  Customer 클래스의 프로퍼티를 위와 같이 초기화

C.     확장 메소드

static class MyClass

{

    // staticthis를 사용하여 Extension Method를 구성

    // this 다음에 나오는 타입(string)를 대상으로 확장

    // 인자를 받고 싶다면 그 다음에 넣으면 됨(int num)

    // 다음은 string 타입에 Greeting 멤버 함수를 추가

    public static string Greeting(this string str, int num)

    {

        return str + "안녕하세요" + num.ToString();

    }


    // 다음은 string 타입에 인자가 없는 IsEmailCheck 멤버 함수를 추가

    // string 변수가 가지고 있는 값이 Email 주소인지를 체크

    public static bool IsEmailCheck(this string str)

    {

        Regex reg = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");

        return reg.IsMatch(str);

    }

}


// string 타입에 추가된 멤버 함수는 다음과 같이 사용할 수 있음

private void button1_Click(object sender, EventArgs e)

{

    string str = "홍길동";

    MessageBox.Show(str.Greeting(123));

}


private void button2_Click(object sender, EventArgs e)

{

    string str = textBox1.Text;

    if (str.IsEmailCheck())

MessageBox.Show("OK");

    else

MessageBox.Show("Error");

}

D.     익명 타입

       i.         var

      ii.         자바 스크립트와는 달리 타입이 한 번 정하여지면 변경할 수 없음

     iii.         Lamda Expression의 기반 기술로 사용 됨

E.      Lamda Expression

       i.         LINQ의 기반 기술

      ii.         익명 타입을 사용

Private void button2_Click(object sender, EventArgs e)

{

    List<Customer> myCustomer = GetCustomerList();

    //c는 익명 타입

    //myCustomer의 값 중 하나가 c에 대입하여 이를 사용

    IEnumerable<Customer> ie = myCustomer.Where(c => c.City == "서울");

    //위를 다음과 같이 익명 함수를 사용하여 작성할 수 있음

    //IEnumerable<Customer> ie = myCustomer.Where(

    //    delegate(Customer c)

    //    {

    //        return (c.City == "서울" ? true : false);

    //    }

    //);


    foreach (Customer cs in ie)

    {

        MessageBox.Show(cs.Name);

    }

}


private void button3_Click(object sender, EventArgs e)

{

    List<Customer> myCustomer = GetCustomerList();

    double avg = myCustomer.Average(c => c.Age);

    //위와 동일한 코드

    //double avg = myCustomer.Average(

    //    delegate(Customer c)

    //    {

    //        return c.Age;

    //    }

    //);

    MessageBox.Show(avg.ToString());

}


private List<Customer> GetCustomerList()

{

    List<Customer> myCustomer = new List<Customer>();

    myCustomer.Add(new Customer() { Name = "홍길동", Age = 10, City = "서울" });

    myCustomer.Add(new Customer() { Name = "김길덩", Age = 20, City = "부산" });

    myCustomer.Add(new Customer() { Name = "안길둥", Age = 30, City = "대구" });

    myCustomer.Add(new Customer() { Name = "원갈동", Age = 40, City = "광주" });

    myCustomer.Add(new Customer() { Name = "문걸동", Age = 50, City = "서울" });

    myCustomer.Add(new Customer() { Name = "조골동", Age = 60, City = "서울" });

    return myCustomer;

}

F.      LINQ

       i.         List<> 타입을 이용한 LINQ

private void button1_Click(object sender, EventArgs e)

{

    List<MyClass> product = new List<MyClass>();

    product.Add(new MyClass() { Product = "컴퓨터", Price = 1000, EA = 3 });

    product.Add(new MyClass() { Product = "마우스", Price = 4000, EA = 30 });

    product.Add(new MyClass() { Product = "키보드", Price = 100, EA = 10 });

    product.Add(new MyClass() { Product = "모니터", Price = 300, EA = 5 });

    product.Add(new MyClass() { Product = "CPU", Price = 10000, EA = 44 });

    product.Add(new MyClass() { Product = "메모리", Price = 5500, EA = 2 });

    product.Add(new MyClass() { Product = "HDD", Price = 700, EA = 93 });


    // 익명 타입 대신 IEnumerable<MyClass> 타입으로 받아도 됨

    var query = from p in product

                where p.Price > 1000 && p.EA > 10

                select p;


    //foreach (MyClass mc in query)

    //{

    //    MessageBox.Show(mc.Product);

    //}


    // query IEnumerable<MyClass> 타입이므로 ToList()하지 않아도 됨

    dataGridView1.DataSource = query //.ToList();

}

      ii.         SQL 2005을 이용한 Linq

1.      SQL Management Studio 설치

A.     Visual Studio 2008을 설치할 경우 SQL Server Express 버전이 설치됨

B.      추가적으로 SQL Server를 설치하지 않고 이를 활용 가능

C.      SQL Server Express 버전은 Management Studio를 별도로 설치하여야 함

D.     SQL Management Studio 설치

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=c243a5ae-4bd1-4e3d-94b8-5a0f62bf7796

E.      설치된 Management Studio를 사용하여 SQL Server Express 버전 접속 시 다음을 유의

사용자 삽입 이미지

Ø  서버 이름 : localhost\sqlexpress

F.      SQL 2000 Sample DB 설치

http://www.microsoft.com/downloads/details.aspx?FamilyID=06616212-0356-46A0-8DA2-EEBC53A68034&displaylang=en

Ø  설치 폴더 - “C:\SQL Server 2000 Sample Databases”NORTHWND/PUBSManagement Studio에서 추가

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

Ø  두 파일에 대하여 진행할 것

2.      Visual Studio 프로젝트 생성

A.     새 웹 프로젝트 생성

B.      새 항목: LINQ To SQL 추가

C.      데이터베이스 연결 추가

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

                                  i.         서버: localhost\sqlexpress ß Express 버전은 이런 방식으로 접근

Ø  정확히 입력하여야 데이터베이스를 선택할 수 있음

                                 ii.         데이터베이스: Northwind

D.     테이블 Drag&Drop: Orders

사용자 삽입 이미지

E.      컨트롤 추가

                                  i.         TextBox

                                 ii.         Button

                                iii.         GridView

                                iv.         LinqDataSource

사용자 삽입 이미지

F.      LinqDataSource 설정

사용자 삽입 이미지

사용자 삽입 이미지

Ø  DataContext 개체는 컴파일 후에 보일 것임

사용자 삽입 이미지

Ø  컬럼 선택 후 ‘Where’ 버튼 선택

사용자 삽입 이미지

Ø  추가 버튼 클릭 시 미리 보기에 추가 됨

G.     DataBinding

Ø  버튼 Click 이벤트에 다음 코드 추가

protected void Button1_Click(object sender, EventArgs e)

{

    GridView1.DataSource = LinqDataSource1;

    GridView1.DataBind();

}

H.     실행하여 버튼을 클릭하면 다음의 형태로 결과를 가져옴

사용자 삽입 이미지