LINQ 7

#095_닷넷(.NET)_ ADO.NET - 비연결 계층 LINQ

안녕하세요 삽잡이입니다. 몇일 전부터 ADO.NET에 대해서 알아보고 있습니다.이번 시간에는 ADO.NET의 마지막으로써비 연결 계층에서 LINQ를 사용하는 기능에 대해서 알아보려고 합니다. LINQ 문법은 쿼리 문법으로써SQL과 마찬가지로 많은 데이터를 대상으로 때립니다. 이전에는 객체들인 objects 형식에 때렸던 것이었습니다.그런데 ADO.NET에서 보셨으면 아시겠지만,DataSet을 대상으로도 LINQ가 가능하다는 놀라운 사실을 알 수 있습니다. 지금까지 데이터를 조작하는 방법은 총 세가지였습니다.1. Tables, Rows, Colums 컬렉션을 사용.2. DataReader 객체를 사용.3. 강력한 타입의 데이터 클래스를 사용. 그리고 이번에 알아볼 LINQ까지 합치면 이제는 총 네가지이군요..

#067_닷넷(.NET)_.Net Framework 기본 - LINQ 내부 표현 방식

안녕하세요 삽잡이입니다. 이번 시간에는 LINQ 내부 표현 방식에 대해서 알아보려고합니다. LINQ는 내부적으로 어떻게 동작하고 있는 것일까요? 사실 이와 같이 코드를 구현하게 되더라도,모두 컴파일러가 함수를 호출해주게 됩니다. 이처럼 자동으로 호출해주는 기능들 가운데서Func와 Action이라는 대리자에 대해서 알아보고자합니다. Func, Action 대리자는 모두 delegate입니다. 당연한 소리를...함수를 가리키고 함수처럼 동작하는 객체로써,함수를 호출하려고 사용하지요. 대리자를 범용적으로 사용하는 방법에는 두가지가 있습니다.Func는 return 타입을 갖고, 인수가 없는 놈부터 시작하여서 여러개인 놈들을 미리 만들어 놓습니다.그리고 Action은 return 타입이 void이며, 인수가 없는..

#066_닷넷(.NET)_.Net Framework 기본 - LINQ의 역할 (사용자 정의형)

안녕하세요 삽잡이입니다. 이번 시간에는 사용자 정의형에 대한 LINQ에 대해서 좀 알아보려고합니다. 사용자 정의 타입 또한 LINQ가 가능합니다.또한, where 즉, 조건 절에서 결과치가 bool 형식이라면 몇 개의 조건을 줘도 상관없습니다. 제네릭 컬렉션의 경우 모두 IEnumerable 형식을 상속받습니다.따라서, LINQ의 동작에 대해서 걱정할 것이 없습니다.하지만, 기본적으로 IEumerable 형식을 지원하는 LINQ에서비 제네릭 컬렉션의 경우 제네릭 이전에 나온 인터페이스로써 꼼수(?)를 써야 LINQ를 사용할 수 있게 됩니다. 그 꼼수는 바로 OfType() 이라는 호환 가능한 확장 메서드를 사용하는 것입니다. 내부적으로 ArrayList는 모두 다 저장할 수 있는 object 타입입니다...

#065_닷넷(.NET)_.Net Framework 기본 - LINQ의 역할 (기본형) 2

안녕하세요 삽잡이입니다. 이번 시간에는 LINQ 쿼리를 가지고 놀 때기본형식으로 가지고 노는 경우에 대해서 지난시간에 이어 설명해보려고합니다. LINQ에도 확장 메서드가 사용되고 있다는 사실을 아십니까?사실, 확장 메서드는 IEnumerable 형식의 인터페이스에 만들어져 있습니다. 따라서, LINQ를 동작시키는 모든 형식은 IEnumerable의 수 많은 기능을 사용할 수 있습니다.즉, IEnumerable를 구현한 녀석이라면 모두 다 확장 메서드를 사용할 수 있다 이겁니다. 어마어마하죠? 아무튼... LINQ는 두가지로 실행할 수 있다는 사실을 아십니까?바로, '즉시 실행'과 '지연 실행'입니다.즉시 실행의 경우 LINQ 쿼리를 때렸을 경우 '지금' 동작이 수행되는 것이고, 지연 실행은 LINQ 쿼리..

#064_닷넷(.NET)_.Net Framework 기본 - LINQ의 역할 (기본형) 1

안녕하세요 삽잡이입니다. 이번 시간에는 LINQ의 기본적인 문법들에 대해서 알아보려고합니다.LINQ 중에서도 LINQ to Object에 대해서 알아보도록 하지요..즉, 객체 대상으로 LINQ를 때릴 때를 살펴보자 이겁니다. LINQ는 모든 데이터 타입을 다룰 수 있는 기능을 제공해줍니다.쿼리를 날릴 대상(Target)만이 달라질 뿐이지 문법이 어디 달라지겠습니까?즉, 누구를 타겟으로 질의를 던질 수 있느냐로 종류만 나뉠 뿐이라는 것입니다.그 종류에는 Object, XML, DataSet, Entities, 병렬 LINQ로 나뉩니다. DataBase를 대상으로도 LINQ를 던질 수 있는 종류도 있습니다.DataSet과 Entities인데요... 이 들이 바로 데이터베이스와 관련된 내용입니다.LINQ는 어..

#063_닷넷(.NET)_.Net Framework 기본 - LINQ 소개 및 관련 기능

안녕하세요 삽잡이입니다. 이번 시간에는 LINQ가 무엇인지, 그리고 어떤 기능이 들어가있는지에 대해서간략하게(?) 알아보려고합니다. LINQ는 Language Intergranted Query를 말합니다.즉, 통합 쿼리 언어라고 말 할 수 있지요. LINQ는 데이터 집합 즉, 단일 데이터가 대상이 아닌, 여러 데이터가 모여있는 집합을 대상으로 사용됩니다. 프로그램의 구조를 살펴보도록 하겠습니다. 쿼리 언어의 대표적인 예로는 SQL이라는 언어가 있습니다.Structed Query Language로써, APP과 DB를 관리하는 수 많은 DBMS와 소통을 위한 언어입니다.참고로 DBMS는 DB를 관리하는 어플리케이션 프로그램을 말합니다. 데이터베이스와 이야기하는 표준 언어를 만들었는데이 데이터베이스와 이야기하..

#013_닷넷(.NET)_.Net Framework 기본 - var & LINQ

안녕하세요 삽잡이입니다. 이번 시간에는 var와 LINQ라는 C# 기능에 대해서 알아보고자합니다. var는 임시적으로 타입 변환을 변환해주는 기능을 가지고 있습니다.즉, '범용적인 변수의 형식'을 var라고 할 수 있다 이겁니다. 그렇다면 var라는 형식이 있는 것인가요?사실은 컴파일러에의해 '오른쪽 타입을 보고 왼쪽 타입을 결정'하는 것입니다. 만약, 왼쪽 타입을 알지 못할 때가 있습니다.그렇다면 결국 오른쪽 타입을 알 수 없다는 것이지요...이때 var를 통해 컴파일러가 알아서 만들어주는 것입니다. 그렇다고 var가 편하다고 계속 쓰면 안됩니다.우선적으로 명확성이 떨어지고, var는 '지역변수'로만 사용이 가능하기 때문입니다. C#에는 미니 언어인 LINQ를 사용할 수 있습니다.이 미니 언어인 'LI..