C# SingleOrDefault() 메서드란?SingleOrDefault() 메서드는 LINQ에서 제공하는 메서드로, 시퀀스(컬렉션)에서 특정 단일 요소를 반환합니다. 만약 시퀀스에 해당 요소가 존재하지 않으면, 예외를 발생시키는 대신 해당 타입의 기본값(default)을 반환합니다. 예를 들어 참조 타입인 경우 null, 숫자 타입인 경우 0이 반환됩니다.참고로 Single() 메서드와 달리, SingleOrDefault()는 결과가 비어 있어도 예외를 던지지 않기 때문에 안전하게 값을 조회할 때 유용합니다.기본 동작 이해하기다
프로그래밍을 하다 보면 문자열에 포함된 공백(whitespace)을 모두 제거해야 하는 경우가 자주 있습니다. 예를 들어 다음과 같은 문자열 str1이 있다고 가정해 보겠습니다.string str1 = Brad Pitt;공백을 제거하려면 정규식(Regex)의 Replace 메서드를 사용하여 공백 패턴을 빈 문자열로 치환하면 됩니다. 이때 System.Text.RegularExpressions 네임스페이스를 활용합니다.string str2 = System.Text.RegularExpressions.Regex.Replace(str1,
C# LINQ Skip() 메서드란?C#의 Skip() 메서드는 LINQ에서 제공하는 연산자로, 시퀀스(컬렉션)의 앞쪽에서 지정한 개수만큼 요소를 건너뛴 후 나머지 요소들을 반환합니다. 예를 들어 상위 순위를 제외한 목록을 가져오거나, 페이징 처리를 구현할 때 매우 유용하게 사용됩니다.기본 문법public static IEnumerable<TSource> Skip<TSource>(this IEnumerable<TSource> source, int count);source: 요소를 건너뛸 대상 컬렉션c
C#에서 숫자(N) 형식 지정자는 숫자 값을 천 단위 구분 기호와 소수점이 포함된 문자열로 변환할 때 사용합니다. 이 지정자를 적용하면 숫자가 다음과 같은 형태로 표현됩니다.-d,ddd,ddd.ddd…각 구성 요소의 의미는 다음과 같습니다.- : 필요한 경우 표시되는 음수 기호입니다.d : 숫자(0~9)를 나타냅니다., : 그룹(천 단위) 구분 기호입니다.. : 소수점 기호입니다.형식 지정자의 동작 방식N 뒤에 숫자를 붙여 소수점 이하 자릿수를 직접 지정할 수 있습니다. 예를 들어 N3은 소수점 셋째 자리까지 표시합니다. 자릿수를
C#의 SkipLast() 메서드는 컬렉션(시퀀스)의 끝에서 지정한 개수만큼 요소를 건너뛴 뒤, 나머지 요소들을 반환합니다. 내림차순 정렬과 함께 사용하면 상위 점수만 손쉽게 추출할 수 있어 실무에서 유용하게 활용됩니다.예제 데이터 준비먼저 학생들의 점수가 담긴 배열을 하나 준비하겠습니다.int[] marks = { 45, 88, 50, 90, 95, 85 };이 배열을 내림차순으로 정렬한 후, SkipLast(2)를 사용해 끝에서 두 개의 요소를 제외해 보겠습니다. 람다 식(Lambda Expression)을 활용하면 다음과 같이
C#의 SkipWhile() 메서드는 지정된 조건이 참인 동안 시퀀스의 요소를 건너뛰고(bypass), 그 이후의 나머지 요소들을 반환합니다. 이 메서드는 System.Linq 네임스페이스에서 제공되며, 람다 식(Lambda Expression)을 사용해 조건을 간결하게 정의할 수 있습니다.SkipWhile()의 기본 동작SkipWhile()은 배열이나 컬렉션을 처음부터 순회하면서 조건을 만족하는 요소를 제외하고, 조건이 처음으로 거짓이 되는 시점부터 시퀀스 끝까지의 모든 요소를 결과로 반환합니다.예제 데이터 준비다음과 같은 정수형
TryParse() 메서드는 열거형 상수의 문자열 표현을 그에 대응하는 열거형 객체로 변환하는 데 사용됩니다. 일반적인 Parse() 메서드와 달리 변환에 실패해도 예외를 던지지 않고 false를 반환하기 때문에, 잘못된 입력을 안전하게 처리할 수 있다는 장점이 있습니다.먼저 열거형(enum)을 정의해 보겠습니다.enum Vehicle { Bus = 2, Truck = 4, Car = 10 };다음으로 문자열 배열을 선언하고 여러 값을 설정합니다.string[] VehicleList = { 2, 3, 4, bus, Truck, CA
C#에서 두 시퀀스(배열) 간의 차이를 구하려면 LINQ의 Except() 메서드를 사용하면 됩니다. Except()는 첫 번째 시퀀스에는 포함되어 있지만 두 번째 시퀀스에는 없는 요소들만 모아 새로운 컬렉션으로 반환합니다. 1. 두 시퀀스 설정하기 먼저 서로 비교할 두 개의 double 형식 배열을 준비합니다. double[] arr1 = { 10.2, 15.6, 23.3, 30.5, 50.2 }; double[] arr2 = { 15.6, 30.5, 50.2 }; 2. Except() 메서드로 차이 구하기 위 두 배열의 차집합을
C# LINQ Sum() 메서드란?LINQ의 Sum() 메서드를 사용하면 컬렉션에 포함된 숫자 요소들의 합계를 간단하게 계산할 수 있습니다. 정수뿐만 아니라 double, float, decimal 등 다양한 숫자 형식의 컬렉션에 활용할 수 있습니다.정수 리스트 준비하기먼저 합계를 구할 정수 요소로 이루어진 리스트를 선언합니다.List<int> list = new List<int> { 99, 34, 77, 75, 87, 35, 88};Sum() 메서드로 합계 계산하기AsQueryable()을 호출해 컬렉션을 쿼
C#에서 리스트나 컬렉션 같은 시퀀스의 모든 요소 합계를 구하려면 LINQ에서 제공하는 Sum() 메서드를 활용할 수 있습니다. 이 글에서는 AsQueryable()과 함께 Sum() 메서드를 사용해 정수 리스트의 합을 구하는 방법을 예제와 함께 살펴보겠습니다.1. 시퀀스(리스트) 생성하기가장 먼저 합계를 구할 숫자 시퀀스를 준비합니다. 아래 코드처럼 List<int>를 선언하고 초기값을 지정합니다.List<int> myList = new List<int> { 1, 2, 3, 4, 5 };2. Sum
C#의 Take() 메서드를 사용하면 시퀀스(컬렉션)의 시작 부분에서 지정한 개수만큼의 요소를 손쉽게 추출할 수 있습니다. 특히 AsQueryable()과 함께 사용하면 LINQ 쿼리 형태로 데이터를 유연하게 처리할 수 있습니다.Take() 메서드란?Take(n)은 시퀀스의 첫 번째 요소부터 n개의 요소를 반환하는 LINQ 연산자입니다. 정렬 메서드인 OrderByDescending()과 조합하면 상위 n개 데이터를 구하는 데 매우 유용합니다.예제 소개다음과 같이 학생 점수가 담긴 배열이 있다고 가정해 보겠습니다.int[] mark
C#의 Queryable.TakeLast() 메서드는 시퀀스의 끝에서부터 지정된 개수만큼의 요소를 추출할 때 사용되는 LINQ 연산자입니다. 특히 정렬된 컬렉션에서 최댓값처럼 뒤쪽에 위치한 요소들을 간편하게 가져올 수 있어 유용합니다. TakeLast() 기본 사용법 먼저 예제에 사용할 정수형 배열입니다. int[] pages = { 492, 290, 129, 602, 152 }; 요소를 오름차순으로 정렬하기 위해 OrderBy() 메서드를 사용하고, 이어서 TakeLast() 메서드를 호출하면 정렬된 시퀀스의 마지막에서 원하는 개
TakeWhile() 메서드는 시퀀스에서 지정한 조건이 참(true)인 동안에만 요소를 순서대로 가져오는 LINQ 연산자입니다. 조건이 처음으로 거짓(false)이 되는 순간, 그 이후의 요소들은 모두 무시됩니다.TakeWhile() 기본 개념먼저 문자열로 구성된 리스트를 살펴보겠습니다.IList<string> str = new List<string>(){ Car, Bus, Truck, Airplane};이제 길이가 4 미만인 문자열만 필요하다고 가정해 보겠습니다. 이 경우 람다 식(Lambda Expressi
C#에서 Int64 값을 8진수(octal) 문자열로 표현하려면 Convert.ToString() 메서드를 사용하고, 두 번째 매개변수로 진법을 지정하면 됩니다. 8진수로 변환하려면 두 번째 매개변수에 8을 전달합니다.참고로 Int64는 64비트 부호 있는 정수(signed integer)를 나타내는 자료형으로, C#에서는 long 키워드에 해당합니다.1. Int64 변수 선언먼저 변환할 Int64(long) 타입의 변수를 선언합니다.long val = 986766;2. 8진수 문자열로 변환이제 Convert.ToString() 메
C#에서 배열 요소를 정렬할 때는 LINQ의 ThenBy() 메서드를 활용할 수 있습니다. ThenBy()는 1차 정렬 기준(OrderBy)의 결과가 같은 요소들에 대해 추가적인 정렬 조건을 적용하는 메서드로, 다단계 정렬이 필요할 때 매우 유용합니다.예를 들어 다음과 같은 문자열 배열이 있다고 가정해 보겠습니다.string[] str = { Sandler, Jack, Tom, Matt, Henry, Johnny };이제 람다 식(Lambda Expression)을 사용해 ThenBy() 메서드 내부에 정렬 조건을 설정하여, 문자열
C#에서 시퀀스의 요소를 내림차순으로 정렬하려면 LINQ에서 제공하는 OrderByDescending() 메서드와 ThenBy() 메서드를 사용합니다. OrderByDescending()은 지정된 기준 키를 기준으로 요소를 내림차순으로 정렬하며, ThenBy()는 첫 번째 정렬 기준이 같은 요소들에 대해 2차 정렬 조건을 적용합니다.다음과 같은 문자열 배열이 있다고 가정해 보겠습니다.string[] myStr = { "Keyboard", "Laptop", "Mouse", &quo
C# LINQ ThenBy 메서드란?ThenBy() 메서드는 시퀀스의 요소들을 보조 키(secondary key)를 기준으로 오름차순 정렬할 때 사용합니다. OrderBy()로 1차 정렬을 수행한 뒤, 동일한 정렬 값이 여러 개 존재할 경우 추가적인 정렬 기준을 적용하기 위해 함께 사용됩니다.기본 사용 방법ThenBy는 OrderBy() 또는 OrderByDescending() 호출 결과인 IOrderedEnumerable, IOrderedQueryable에서만 체이닝하여 호출할 수 있습니다.var result = 컬렉션.Order
C#에서 AddBefore() 메서드를 사용하면 연결 리스트(LinkedList)의 특정 노드 바로 앞에 새 노드를 간편하게 추가할 수 있습니다. 이 메서드는 지정한 기존 노드를 기준으로 해당 위치 앞에 새로운 노드를 삽입하며, O(1) 시간 복잡도로 동작하기 때문에 매우 효율적입니다.LinkedList 생성하기먼저 문자열 노드로 구성된 LinkedList를 만들어 보겠습니다.string[] students = {Henry, David, Tom}; LinkedList<string> list = new LinkedList&
C#의 Queryable Union 메서드를 사용하면 두 개의 시퀀스(배열)에 대해 합집합 연산을 수행할 수 있습니다. Union 메서드는 두 시퀀스의 모든 요소를 하나로 병합하되, 중복된 값은 한 번만 포함시킵니다.Union 메서드란?Union은 System.Linq 네임스페이스에서 제공하는 메서드로, IQueryable 형식의 시퀀스 두 개를 결합합니다. 기본 비교자(Default Comparer)를 기준으로 중복 요소를 자동으로 제거하며, 그 결과는 IEnumerable<T> 형태로 반환됩니다.예제 데이터 준비다음과
C# LINQ의 LastOrDefault() 메서드는 시퀀스의 마지막 요소를 반환하며, 요소가 존재하지 않을 경우 해당 데이터 형식의 기본값(default)을 반환합니다.일반적인 Last() 메서드를 빈 컬렉션에 호출하면 InvalidOperationException 예외가 발생하지만, LastOrDefault()를 사용하면 예외 없이 안전하게 기본값을 받을 수 있다는 점이 가장 큰 차이입니다.빈 리스트에서의 동작먼저 비어 있는 리스트를 하나 만들어 보겠습니다.List<double> val = new List<dou