C#/LINQ45 [C#]LINQ 즉시 실행과 지연 실행(Immediate Execution vs Deferred Execution) 즉시 실행과 지연 실행 C#의 LINQ는 두 가지 방식으로 실행됩니다. 즉시 실행(Immediate Execution) - count, average, min, max, ToArray, ToList 등.. 즉시 실행에 포함됩니다. 지연 실행(Deferred Execution) - select, SelectMany, where, Take, Skip 등.. 지연 실행에 포함됩니다. 이번 포스팅은 LINQ의 즉시 실행과 지연 실행에 대해 소개합니다. 즉시 실행 즉시 실행은 쿼리를 강제로 실행하고 결과를 바로 가져옵니다. 다음 예제는 즉시 실행을 설명하는 소스 코드입니다. public class Person { public int ID { get; set; } public string Name { get; se.. C#/LINQ 2022. 8. 15. [C#]LINQ 결과를 Dictionary로 변환 - ToDictionary 메서드 ToDictionary 메서드 C#의 Dictionary 클래스는 Key-Value 쌍으로 구성된 컬렉션입니다. LINQ 결과는 IEnumerable를 반환하므로 Key-Value 쌍으로 구성된 Dictionary으로 변환해야 하는 경우 특정 작업이 필요한데, LINQ에서 제공하는 ToDictionary() 메서드를 사용하여 LINQ 결과를 Dictionary으로 변환할 수 있습니다. System.Linq의 Enumerable 클래스에 정의된 ToDictionary() 메서드는 네 가지 오버로드된 버전이 존재합니다. public static Dictionary ToDictionary( this IEnumerable source, Func keySelector); public static Dictionar.. C#/LINQ 2022. 8. 15. [C#]LINQ 결과를 리스트 또는 배열로 반환 - ToList, ToArray 메서드 LINQ 결과를 리스트 또는 배열로 반환 C#의 Linq에서 제공하는 메서드는 IEnumerable를 반환합니다. 따라서, 다음 예제처럼 LINQ의 결과를 리스트 또는 배열로 반환하는 경우 컴파일 에러가 발생합니다. class Program { static void Main(string[] args) { List intList = new List() { 1, 2, 3 }; List whereResult = intList.Where(num => num > 1); Console.WriteLine("whereResult 값"); whereResult.ForEach(num => Console.Write(num + " ")); } } [에러 내용] 이번 포스팅에서 소개하는 다음 두 가지 메서드를 사용하면 LINQ.. C#/LINQ 2022. 8. 14. [C#]LINQ 데이터 추가 방법 - Append, Prepend 메서드 LINQ 데이터 추가 방법 이번 포스팅은 데이터 집합에 값을 추가할 수 있는 다음 두 가지 메서드를 소개합니다. - Append() - Prepend() 참고로 Append(), Prepend() 메서드는 .Net Framework 4.7.1 이상에서 제공하는 메서드이므로 이전 버전에서는 사용할 수 없습니다. Append 메서드 C#의 Linq에서 제공하는 Append() 메서드는 데이터 집합 마지막 위치에 값을 추가하는 용도로 사용됩니다. Append() 메서드는 기존 데이터 집합을 수정하지 않으며, 값이 추가된 새로운 데이터 집합을 반환합니다. public static IEnumerable Append( this IEnumerable source, TSource element); Append() 메서.. C#/LINQ 2022. 8. 14. [C#]LINQ 빈 값으로 설정 - Empty 메서드 Empty 메서드 지난 포스팅에서 데이터를 생성하는 메서드인 Range(), Repeat() 메서드에 대해 설명하였습니다. [C#]LINQ 지정된 범위 또는 횟수만큼 데이터 생성 - Range, Repeat 메서드 생성 연산자 지금까지는 Join, Select, Where, Take 메서드 등... 데이터 집합에서 원하는 데이터를 추출하는 방법을 소개했습니다. 이번 포스팅은 데이터를 생성할 수 있는 두 가지 메서드를 소개합니 developer-talk.tistory.com C#의 Linq는 또 다른 생성 메서드인 Empty() 메서드를 제공합니다. public static IEnumerable Empty(); Empty() 메서드는 매개변수가 존재하지 않으며 TResult 타입(제네릭 타입)인 IEnum.. C#/LINQ 2022. 8. 14. [C#]LINQ 지정된 범위 또는 횟수만큼 데이터 생성 - Range, Repeat 메서드 생성 연산자 지금까지는 Join, Select, Where, Take 메서드 등... 데이터 집합에서 원하는 데이터를 추출하는 방법을 소개했습니다. 이번 포스팅은 데이터를 생성할 수 있는 두 가지 메서드를 소개합니다. - Range() 메서드 - Repeat() 메서드 Range 메서드 Range() 메서드는 지정된 범위의 정수를 생성합니다. public static IEnumerable Range(int start, int count); Range() 메서드는 두 개의 int 타입 매개변수가 존재합니다. 첫 번째 매개변수는 지정된 범위에서 시작하는 값을 설정합니다. 두 번째 매개변수는 start부터 생성될 개수를 설정합니다. 예제 1. 1부터 10까지 데이터 생성 다음 예제는 Range() 메서드를 사.. C#/LINQ 2022. 8. 14. [C#]LINQ 특정 조건을 만족하는 데이터 생략하기 - SkipWhile 메서드 SkipWhile 메서드 C#의 Linq에서 제공하는 SkipWhile() 메서드는 데이터 집합의 데이터를 처음 위치에서 순회합니다. 데이터 집합을 순회하는 동안 SkipWhile() 메서드에 전달된 조건문의 결과가 false인 경우 반복문을 중단하고 나머지 데이터를 반환합니다. Sytem.Linq 네임스페이스에 존재하는 SkipWhile() 메서드는 두 가지 오버로드된 버전이 존재합니다. public static IEnumerable SkipWhile( this IEnumerable source, Func predicate); public static IEnumerable SkipWhile( this IEnumerable source, Func predicate); SkipWhile() 메서드의 매개변.. C#/LINQ 2022. 8. 14. [C#]LINQ 특정 개수만큼 생략 - Skip 메서드 Skip 메서드 C#의 Linq는 데이터 집합의 처음 위치에서 n개의 요소만큼 건너뛴 다음 나머지 값을 반환하는 Skip() 메서드를 제공합니다. 즉, Skip() 메서드에 int 타입의 값 n을 전달하면 n번째 위치부터 시작하는 모든 값이 반환됩니다. IEnumerable Skip(this IEnumerable source, int count); 주의사항으로 Skip() 메서드를 호출하는 데이터 집합이 null로 할당된 경우 ArgumnetNullException이 발생합니다. 예제 1. int 타입의 List 다음 예제는 5개의 요소가 존재하는 int 타입의 List에서 Skip() 메서드를 호출합니다. Skip() 메서드에 3을 전달하면 처음 위치에서 3개의 요소를 건너뛴 다음 나머지 데이터를 가져.. C#/LINQ 2022. 8. 11. [C#]LINQ 특정 조건을 만족하는 데이터 가져오기 - TakeWhile 메서드 TakeWhile 메서드 C#의 Linq에서 제공하는 TakeWhile() 메서드는 데이터 집합의 데이터를 처음 위치에서 순회합니다. 데이터 집합을 순회하는 동안 TakeWhile() 메서드에 전달된 조건문의 결과가 false인 경우 반복문을 중단하고 반복문이 실행되는 동안 조건을 충족했던 데이터를 반환합니다. System.Linq 네임스페이스에 존재하는 TakeWhile() 메서드는 두 가지 오버로드된 버전이 존재합니다. public static IEnumerable TakeWhile( this IEnumerable source, Func predicate); public static IEnumerable TakeWhile( this IEnumerable source, Func predicate); T.. C#/LINQ 2022. 8. 11. [C#]LINQ 특정 개수만큼 데이터 가져오기 - Take 메서드 Take 메서드 C#의 Linq는 데이터 집합에서 특정 개수만큼 데이터를 가져오는 Take() 메서드를 제공합니다. 데이터 집합의 처음 위치에서 n개의 데이터를 가져오며, 특정 개수는 Take() 메서드의 매개변수로 전달합니다. public static IEnumerable Take(this IEnumerable source, int count); Take() 메서드는 int 타입의 매개변수를 가지며, 특정 개수만큼 데이터를 반환합니다. 만약, Take() 메서드를 호출하는 데이터 집합이 null인 경우 ArgumentNullException이 발생합니다. 예제 1. int 타입의 List 다음 예제는 5개의 요소가 존재하는 int 타입의 List에서 Take() 메서드를 호출합니다. Take() 메서드.. C#/LINQ 2022. 8. 9. [C#]LINQ 두 데이터가 동일한지 체크 - SequenceEqual 메서드 SequenceEqual 메서드 C#의 Linq는 두 개의 시퀀스를 비교하는 SequenceEqual() 메서드를 제공합니다. 두 시퀀스가 동일하면 true를 반환하고 그렇지 않으면 false를 반환합니다. SequenceEqual() 메서드는 두 시퀀스에 동일한 수의 데이터가 존재하고 동일한 순서로 정렬되어 있는 경우 동일한 것으로 간주하고 true를 반환합니다. System.Linq 네임스페이스에 존재하는 SequenceEqual() 메서드는 두 가지 오버로드된 버전이 존재합니다. public static bool SequenceEqual( this IEnumerable first, IEnumerable second); public static bool SequenceEqual( this IEnume.. C#/LINQ 2022. 8. 9. [C#]LINQ 데이터가 비어있는 경우 - DefaultIfEmpty 메서드 DefaultIfEmpty 메서드 C#의 Linq는 DefaultIfEmpty() 메서드를 제공합니다. DefaultIfEmpty() 메서드를 호출하는 시퀀스 또는 데이터 집합이 비어 있지 않으면 시퀀스 또는 데이터 집합이 가지고 있는 데이터가 반환되며, 데이터가 존재하지 않으면 해당 타입의 Default 값이 반환됩니다. System.Linq 네임스페이스에 존재하는 DefaultIfEmpty() 메서드는 두 가지 오버로드된 버전이 존재합니다. public static IEnumerable DefaultIfEmpty( this IEnumerable source); public static IEnumerable DefaultIfEmpty( this IEnumerable source, TSource defa.. C#/LINQ 2022. 8. 8. 이전 1 2 3 4 다음