Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

데블스캠프2017/CSharp안의작은쿼리-이제,LINQ랑놀자!: Difference between revisions

From ZeroWiki
({CREATE})
 
No edit summary
Line 1: Line 1:
= 서기 =
Zeropage 24기 신형철


써주세요
현재 군휴학, 내년 1월 복학 예정
__TOC__
== 개요 ==
* 이 만화를 아시나요?
 
Git The princess! - How to save the princess using 8 programming languages
 
C# : You Give up and go to stackoverflow to have Jon Skeet rescue the princess
 
== LINQ ==
 
* LINQ 란?
 
-> Language INtgrated Query (통합 언어 쿼리)
 
-> .Net Framework 3.5에 도입된 기술, C#에서는 3.0 에서 도입.
 
-> 지역 데이터 컬렉션/리모트 데이터 컬렉션에 대한 질의문 작성이 가능.
 
단순히 C#에만 존재하는 것이 아니라 .NET에 존재함
 
* 퀴즈! 숫자 컬렉션에서 짝수만 골라서, 원본과 제곱 수를 컬렉션에 담아봅시다.
 
* 일반적인 방법 : 원본수/제곱수 클래스 만들어 구현
 
* LINQ 질의를 활용 : 일반적인 방법보다 간단한 코드
 
( 자세한건 발표 ppt 참고)
 
* LINQ를 활용하면 grouping 에 효과적
 
* 가독성, 유지보수할 때 좋아짐
 
* 컬렉션 저장소/종류에 관계없이 코드의 재활용 가능
 
* 사실, LINQ 질의를 수행하기 위해서는 다른 기능들이 많이 필요합니다.
 
-> 암시적 형식 추론, 확장 메서드, 객체 초기화 표현식, 람다 표현식 등
 
-> 대부분 C# 3.0에 LINQ와 함꼐 추가
 
== LINQ 사용을 위한 준비 ==
 
* 람다표현식
 
-> (매개변수 리스트) => { /* 함수 본문 */ } 형태로 사용.
 
조건에 따라 타입, 괄호, 중괄호 생략 가능
 
* 암시적 형식 추론
 
-> 변수 정의 시, 타입 이름 대신 'var' 키워드를 사용
 
* 익명타입
 
익명 타입을 이용하면, 중간 결과를 위한 타입을 컴파일러가 만들수 있게 할 수 있다.
 
-> new{...} 형식으로 생성, 클래스 맴버를 'Name = Value' 식으로 지정
-> 반드시 var 사용(타입명이 존재하지 않기 때문에)
 
* 확장 메서드
-> 확장 메서드를 사용하면, 타입 정의에 대한 접근 없이도 타입 확장을 할수 있다.
-> 정적 클래스 내에서 정적 메서드로 정의, 첫 매개변수에 확장 타입 지정.
 
* 퀴즈! int 타입에 숫자가 짝수인지 알아내시오.
 
== 질의 연산자 ==
*LINQ를 통해 질의를 수행할 때, 많은 질의 연산자를 사용할 수 있다.
-> Enumerable 클래스의 IEnumerable<T>의 확장 메서드로써 존재
-> 많은 질의 연산자를 조합하면, 거의 대부분의 질의문이 작성이 가능하다.
 
* LINQ 질의를 구성하는 두가지 방법
* 유창한 구문(Fluent)을 사용하여 질의를 구성한다.
* 질의 표현식을 사용한다.
 
-> 두가지 조합하여 만들수도 있다.
 
* 유창한 구문?
* 질의 연산자를 메서드 체인을 통해 엮어가며 호출하는 구문
 
* 질의 표현식?
-> SQL 구문과 비슷한 형태로, 컬렉션 질의를 수행할 수 있는 표현 식이다.
-> from절로 시작해서 ,select/group 절로 끝난다.
 
* from, where, orderby, select, group 설명



Revision as of 06:51, 28 June 2017

Zeropage 24기 신형철

현재 군휴학, 내년 1월 복학 예정

개요

  • 이 만화를 아시나요?

Git The princess! - How to save the princess using 8 programming languages

C# : You Give up and go to stackoverflow to have Jon Skeet rescue the princess

LINQ

  • LINQ 란?

-> Language INtgrated Query (통합 언어 쿼리)

-> .Net Framework 3.5에 도입된 기술, C#에서는 3.0 에서 도입.

-> 지역 데이터 컬렉션/리모트 데이터 컬렉션에 대한 질의문 작성이 가능.

단순히 C#에만 존재하는 것이 아니라 .NET에 존재함

  • 퀴즈! 숫자 컬렉션에서 짝수만 골라서, 원본과 제곱 수를 컬렉션에 담아봅시다.
  • 일반적인 방법 : 원본수/제곱수 클래스 만들어 구현
  • LINQ 질의를 활용 : 일반적인 방법보다 간단한 코드

( 자세한건 발표 ppt 참고)

  • LINQ를 활용하면 grouping 에 효과적
  • 가독성, 유지보수할 때 좋아짐
  • 컬렉션 저장소/종류에 관계없이 코드의 재활용 가능
  • 사실, LINQ 질의를 수행하기 위해서는 다른 기능들이 많이 필요합니다.

-> 암시적 형식 추론, 확장 메서드, 객체 초기화 표현식, 람다 표현식 등

-> 대부분 C# 3.0에 LINQ와 함꼐 추가

LINQ 사용을 위한 준비

  • 람다표현식

-> (매개변수 리스트) => { /* 함수 본문 */ } 형태로 사용.

조건에 따라 타입, 괄호, 중괄호 생략 가능

  • 암시적 형식 추론

-> 변수 정의 시, 타입 이름 대신 'var' 키워드를 사용

  • 익명타입

익명 타입을 이용하면, 중간 결과를 위한 타입을 컴파일러가 만들수 있게 할 수 있다.

-> new{...} 형식으로 생성, 클래스 맴버를 'Name = Value' 식으로 지정 -> 반드시 var 사용(타입명이 존재하지 않기 때문에)

  • 확장 메서드

-> 확장 메서드를 사용하면, 타입 정의에 대한 접근 없이도 타입 확장을 할수 있다. -> 정적 클래스 내에서 정적 메서드로 정의, 첫 매개변수에 확장 타입 지정.

  • 퀴즈! int 타입에 숫자가 짝수인지 알아내시오.

질의 연산자

  • LINQ를 통해 질의를 수행할 때, 많은 질의 연산자를 사용할 수 있다.

-> Enumerable 클래스의 IEnumerable<T>의 확장 메서드로써 존재 -> 많은 질의 연산자를 조합하면, 거의 대부분의 질의문이 작성이 가능하다.

  • LINQ 질의를 구성하는 두가지 방법
  • 유창한 구문(Fluent)을 사용하여 질의를 구성한다.
  • 질의 표현식을 사용한다.

-> 두가지 조합하여 만들수도 있다.

  • 유창한 구문?
  • 질의 연산자를 메서드 체인을 통해 엮어가며 호출하는 구문
  • 질의 표현식?

-> SQL 구문과 비슷한 형태로, 컬렉션 질의를 수행할 수 있는 표현 식이다. -> from절로 시작해서 ,select/group 절로 끝난다.

  • from, where, orderby, select, group 설명