본문 바로가기

LINQ13

C# LINQ - Enumerable.TakeWhile Enumerable.TakeWhile(IEnumerable, Func) 메서드 public static System.Collections.Generic.IEnumerable TakeWhile (this System.Collections.Generic.IEnumerable source, Func predicate); 매개변수 source IEnumerable 요소가 반환되는 시퀀스 predicate Func 각 소스 요소를 조건에 대해 테스트할 함수 반환 IEnumerable 테스트를 통과한 요소들의 시퀀스를 반환한다. 예제 코드 string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" }; IEnumerable qu.. 2024. 3. 28.
C#으로 함수형 프로그래밍을 해보자 C#으로 함수형 프로그래밍을 해보자 분명히 하고 가야 할 부분이 있다. C#에서 함수형 프로그래밍에서 영감(functional-programming-inspired)을 받아서 만들어진 기능(feature)들은 순수 함수형 언어의 기능과 완전히 동일하지 않다. (예를 들면 하스켈, Haskell) 하지만 함수형 프로그래밍의 개념을 이해하고 이를 채용하는 것만으로도 앞으로 우리가 적성하는 코드의 질을 대폭 향상할 수 있을 것이다. C#에서 왜 함수형 프로그래밍을? .NET 프레임워크는 몇몇 함수형 기능들을 LINQ 확장자 메서드로 지원한다. 함수형 개념이 들어가 있는 걸 인지하지 못하고 사용했을 것이다. 이제 우리는 C#의 함수형 기능들을 통해서 함수형 프로그래밍이 가지고 있는 장점을 코드에 적용해 볼 것이.. 2024. 3. 14.
C# LINQ - Enumerable.Zip() Enumerable.Zip(IEnumerable, IEnumerable, Func) 메서드public static System.Collections.Generic.IEnumerable Zip (thisSystem.Collections.Generic.IEnumerable first, System.Collections.Generic.IEnumerable second, Func resultSelector); 매개변수first IEnumerable병합할 첫 번째 시퀀스 second IEnumerable 병합할 두 번째 시퀀스 resultSelector Func두 시퀀스의 요소를 병합하는 방법을 지정하는 함수 반환IEnumerable두 입력 시퀀스의 병합된 요소가 들어있는 IEnumerable 예제 코드int[].. 2024. 3. 5.
C# 함수형으로 구현한 팩토리얼 함수 재귀로 구현한 팩토리얼 using System; class Program { static void Main(string[] args) { var input = Console.ReadLine(); var num = Int32.Parse(input); Console.WriteLine($"{num}! result: {Factorial(num)}"); } static long Factorial(int n) { if (n x * y); return result; } } 2024. 3. 4.
C# 표준 질의 연산자(Standard Query Operators) 표준 질의 연산자(Standard Query Operators) Enumerable 클래스는 System.Linq 네임스페이스에 속해 있으며 50개가 넘는 질의 연산자를 포함하는데, 이들을 표준 질의 연산자라고 한다. 이 연산자들은 몇 가지 기능별로 나눠볼 수 있다. Linq는 다양한 형식의 컬렉션에 질의할 수 있는 간편하고 일관된 방법이다. 지연된 실행의 개념을 구현하므로 질의는 생성 시점이 아니라 열거 과정에 실행된다. C# 지연 평가(lazy evaluation)에 대해서 지연 평가란 무엇인가? 컬렉션의 단일 요소가 미리 계산되지 않고 호출되는 시점에서 평가가 이루어지고 실행된다. 아래의 예제 코드를 확인해 보자. 즉시 평가(eager evaluation) 즉시 평가를 사용 jettstream.ti.. 2024. 2. 26.
C# Linq - Enumerable.Take() Enumerable.Take(IEnumerable, Int32) 메서드 public static System.Collections.Generic.IEnumerable Take (this System.Collections.Generic.IEnumerable source, int count); 매개변수 source IEnumerable 요소가 반환되는 시퀀스 count Int32 반환할 요소의 수 반환 IEnumerable 입력 시퀀스의 시작 위치로부터 지정된 수의 요소가 들어있는 IEnumerable 예제 코드 int[] grades = { 59, 82, 70, 56, 92, 98, 85 }; IEnumerable topThreeGrades = grades.OrderByDescending(grade => .. 2024. 2. 26.