Visual Studio 2008
2008. 6. 23.
안혁
http://hyok.kr
i. Ctrl + k, x
ii. Visual C# 선택
iii. 코드 조각 선택
iv. TAB 키를 사용하여 수정
v. 코드 조각 이름을 직접 입력 후 TAB 키를 눌러도 동일한 기능 작동
i. 프로퍼티가 단순히 값을 넣고 가져오는 작업만 하도록 하는 기능을 다음과 같이 정의
public string Name { get; set; } public int Age { get; set; } |
Ø get, set을 정의하지 않음
ii. 컴파일 시 각각에 연결될 변수가 자동으로 생성 à private 변수 필요 없음
iii. 사용 예
Customer obj = new Customer() { Name = "홍길동", Age = 10 }; |
Ø Customer 클래스의 프로퍼티를 위와 같이 초기화
static class MyClass { // static와 this를 사용하여 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"); } |
i. var
ii. 자바 스크립트와는 달리 타입이 한 번 정하여지면 변경할 수 없음
iii. 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; } |
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 설치
E. 설치된 Management Studio를 사용하여 SQL Server Express 버전 접속 시 다음을 유의
Ø 서버 이름 : localhost\sqlexpress
F. SQL 2000 Sample DB 설치
Ø 설치 폴더 - “C:\SQL Server 2000 Sample Databases”의 NORTHWND/PUBS를 Management 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. 실행하여 버튼을 클릭하면 다음의 형태로 결과를 가져옴
'.Net > Visual Studio 2008' 카테고리의 다른 글
Visual Studio 2008 SP1 출시 (0) | 2008.08.13 |
---|---|
Linq to DataSet (0) | 2008.08.12 |
Visual Studio 2008 출시 + WPF, Silverlight, AJAX ASP.NET 공식 사이트 (0) | 2007.12.03 |