본문 바로가기

모두보기

[C#] LINQ 사용방법 - 집합 연산자 Distinct, Union, Intersect, Except 집합 연산자 Set Operators 집합 연산자는 두 집합 간에 관계를 활용하는 연산자합니다. LINQ 메서드 중 Distinct, Union, Intersect, Except 가 집합 연산자에 해당합니다. 집합 내에 중복 요소 제거하기 Distinct 메서드로 factorsOf300 배열에서 중복을 제거한 uniqueFactors 배열을 만듭니다. int[] factorsOf300 = { 2, 2, 3, 5, 5 }; var uniqueFactors = factorsOf300.Distinct(); // uniqueFactors = { 2, 3, 5 }; 두 집합에서 중복되지 않게 합집합 만들기 Union 메서드는 두 집합을 각 원소가 중복되지 않도록 더한 새로운 집합을 만듭니다. int[] numbe..
[C#] LINQ 사용방법 - 그룹 연산자 Group by into 그룹연산자 Grouping Operators 그룹연산자는 group by 와 into 키워드를 사용합니다. 그룹 연산자는 입력 시퀀스를 주어진 키에 맞춰 바구니에 나눠 담습니다. 바구니에 나눠담기 numbers 배열 원소를 5로 나누었을 때 나머지 값을 기준으로 나누어 담습니다. int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var numberGroups = from n in numbers group n by n % 5 into g select (Remainder: g.Key, Numbers: g); // numberGroups = { // { 0 : [ 5, 0 ] }, // { 4 : [ 4, 9 ] }, // { 1 : [ 1, 6 ] }, // { 3 :..
[C#] LINQ 사용방법 - 정렬 연산자 OrderBy, ThenBy, OrderByDescending, ThenByDescending 정렬 연산자 Ordering Operator 정렬 연산자인 OrderBy는 당연히 출력 시퀀스를 기준에 따라 정렬하는 연산자입니다. 자주 사용하는 연산자이므로 여러 예제를 통해 익히고 자주 사용하여 경험을 쌓길 바랍니다. 원소 정렬하기 알파벳 순서로 정렬합니다. string[] words = { "cherry", "apple", "blueberry" }; var sortedWords = from word in words orderby word select word; // sortedWords = { "apple", "blueberry", "cherry" }; 원소의 속성으로 정렬하기 String.Length 속성을 사용하여 정렬합니다. string[] words = { "cherry", "apple", ..
[C#] LINQ 사용방법 - 분할 연산자 Take, Skip, TakeWhile, SkipWhile 분할 연산자 Partition Operator LINQ 에서 제공하는 확장 메서드 중 Take, Skip, TakeWhile, SkipWhile 을 분할 연산자라 합니다. 왜냐하면 분할 연산자는 출력 시퀀스를 분할시켜 반환하기 때문입니다. Take 분할 연산자 Take 메서드로 numbers 배열에서 처음 3개의 원소만 꺼내 출력 시퀀스를 만듭니다. int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var first3Numbers = numbers.Take(3); // first3Numbers = { 5, 4, 1 }; 출력 시퀀스는 Ienumerable 인터페이스로 반환되므로, LINQ 결과에 Take 메서드를 연결하여 사용할 수 있습니다. List custome..
[C#] LINQ 사용방법 - Select Select Select 절은 입력 시퀀스를 원하는 출력 시퀀스로 변환합니다. Select 절 입력 시퀸스에 1을 더하여 출력 시퀀스를 만듭니다. int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; var numsPlusOne = from n in numbers select n + 1; // numsPlusOne = { 6, 5, 2, 4, 10, 9, 7, 8, 3, 1 }; 하나의 속성만 선택하기 products 객체로 이루어진 입력 시퀀스에서 ProductName 속성으로 출력 시퀀스를 만듭니다. List products = GetProductList(); var productNames = from p in products select p.ProductName;..
[C#] LINQ 사용방법 - Where 개요 LINQ 문법은 간단합니다. 하지만 간단한 구문을 복합하여 사용하려고 하면 어떻게 해야 할지 감이 잡히지 않습니다. 그래서 괜히 스택오버플로우에 비슷한 쿼리 문이 없나 뒤적거리게 됩니다. LINQ 개념은 쉽게 설명된 블로그 글도 많고, 개념 자체는 어렵지 않아 금방 이해하게 됩니다. 하지만 실제로 사용할 때 애를 먹는 이유는 LINQ 를 실제로 사용해 본 경험이 부족하기 때문입니다. 그래서 간단한 예제부터 복잡한 예제까지 순차적으로 LINQ 문법의 경험치를 올릴 수 있도록 준비해보았습니다. Where LINQ 에서 Where 절은 질의 결과를 제한하는 절입니다. 오직 Where 절 조건에 맞는 요소만이 결과 시퀀스에 추가되어 출력됩니다. LINQ 쿼리 구조 아래 예제는 Where 절을 사용하여 배열..
2019.12.01 블로그 글 분석 개요 2019년 12월 01일 : 콘텐츠 노출/클릭 > 검색 웹문서 TOP 10 분석 도구 결과에 소요리문답 - 15단원 이웃 사랑이 3,417번 노출되었으나 3번만 클릭되었습니다. 즉 0.1% 라는 매우 낮은 CTR 지수를 보입니다. 이는 다른 블로그 글과 다른 매우 이례적인 사례라 분석을 하게 되었습니다. 가정 해당 글을 다른 글과 단순 비교하였을 때 제목과 내용에 많이 포함된 키워드 이웃과 사랑으로 매우 보편적인 단어입니다. 사랑은 27번, 이웃은 46번 등장합니다. 따라서 저는 키워드를 중심으로 글 분석을 진행하였습니다. 저는 보편적인 단어가 검색에 자주 노출되므로 글의 노출 지수가 높아지게 된 원인이며, 반면 주제가 소요리문답으로 한정적이기 때문에 낮은 클릭 수를 보유한 것이라 가정하였습니다. ..
[C#] Attributes 특성 Attributes 특성 Attributes 특성의 대표적인 특징은 소스 코드에 메타데이터를 추가하여, 런타임 환경에서 소스 코드의 메타데이터에 접근할 수 있다는 점입니다. 특성은 개발자가 자신의 필요에 따라 유연하게 사용하기 보다는 필요한 상황에 .NET 이 제공하는 클래스를 활용하는 방법이 주를 이룹니다. 왜냐하면 특성은 특정 상황에 사용되도록 설계된 기능이기도 하고, 일반적인 응용 프로그램이 소스 코드 의 메타 데이터가 필요한 경우는 드물기 때문입니다. 특성을 활용하는 일반적인 상황 아래와 같은 상황이 개발자가 특성을 활용하게 되는 대부분의 상황에 해당합니다. [DllImport] : 운영체제 네이티브 코드 호출에 필요한 메타데이터를 제공하는 특성 [Obsolete] : 개발자 간의 협업을 위해 특..