두개의 배열이 모두 같은 요소를 갖고 있고, 동일한 순서로 저장되어있는지 비교하는 방법을 소개합니다.
1. SequenceEqual()으로 배열 비교
Enumerable.SequenceEqual(a, b)
는 배열 a와 b의 요소들의 순서와 내용이 모두 같으면 true를 리턴합니다. 두 배열에 모두 동일한 요소가 저장되어있지만, 다른 순서로 저장되어있으면 false가 리턴됩니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {1, 2, 3, 4, 5};
int[] arr3 = {5, 4, 3, 2, 1};
bool result = Enumerable.SequenceEqual(arr1, arr2);
Console.WriteLine("arr1 == arr2 ? " + result);
result = Enumerable.SequenceEqual(arr1, arr3);
Console.WriteLine("arr1 == arr3 ? " + result);
}
}
}
Output:
arr1 == arr2 ? True
arr1 == arr3 ? False
만약 arr1
객체가 null이 아니라면 아래와 같이 arr1.SequenceEqual(arr2)
처럼 직접 array에서 함수를 호출하여 다른 배열과 비교할 수 있습니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {1, 2, 3, 4, 5};
int[] arr3 = {5, 4, 3, 2, 1};
bool result = arr1.SequenceEqual(arr2);
Console.WriteLine("arr1 == arr2 ? " + result);
result = arr1.SequenceEqual(arr3);
Console.WriteLine("arr1 == arr3 ? " + result);
}
}
}
Output:
arr1 == arr2 ? True
arr1 == arr3 ? False
2. 요소는 같지만, 순서가 다른 배열을 비교하는 방법
두개의 배열이 갖고 있는 요소들은 모두 동일한 요소를 갖고 있는데, 순서만 다를 때가 있습니다.
만약 순서는 무시하고 요소 값만 비교하여 같은지 비교하고 싶다면, 배열을 미리 정렬하고 SequenceEqual()
로 같은지 비교할 수 있습니다.
아래 예제에서 사용된 array.OrderBy()
는 배열을 정렬하는 함수이며, 어떤 것을 key로 사용하여 정렬할 것인지에 대한 함수를 인자로 전달해야 합니다.
아래 예제에서는 int 요소 자체를 key로 사용할 것이기 때문에 (a => a)
로 전달하면 됩니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {1, 2, 3, 4, 5};
int[] arr3 = {5, 4, 3, 2, 1};
bool result = Enumerable.SequenceEqual(arr1.OrderBy(a => a), arr2.OrderBy(a => a));
Console.WriteLine("arr1 == arr2 ? " + result);
result = Enumerable.SequenceEqual(arr1.OrderBy(a => a), arr3.OrderBy(a => a));
Console.WriteLine("arr1 == arr3 ? " + result);
}
}
}
Output:
arr1 == arr2 ? True
arr1 == arr3 ? True
Loading script...
Related Posts
- C# 바이트(Byte) 배열을 문자열로 변환
- C# String.format() 함수 알아보기
- C# - foreach (Array, List, Dictionary)
- C# 프로퍼티(Property) Get/Set 함수
- C# - Dictionary에서 key, value 가져오기
- C# - Dictionary 순회, foreach, for 루프
- C# - Dictionary에서 key, value 삭제
- C# - Dictionary.add()로 데이터 추가
- C# - Dictionary 선언 및 초기화
- C# - 문자열을 Double, Float으로 변환
- C# - 문자열을 리스트로 변환
- C# - 두 날짜/시간 비교, DateTime.Compare()
- C# - 날짜 계산, DateTime 시간 더하기 빼기
- C# - 날짜 문자열을 DateTime으로 변환
- C# - Sleep, 몇 초간 지연시키기
- C# - Timestamp(millisecond)를 DateTime 객체로 변환
- C# - 현재 시간 가져오기, DateTime
- C# - 문자열 리스트를 문자열로 변환
- C# - 리스트 복사 (얕은 복사, 깊은 복사)
- C# - 2차원 리스트 선언 및 초기화
- C# - 리스트 선언 및 초기화
- C# - 리스트 길이, 크기 가져오기
- C# - 리스트 합계, 평균 계산
- C# - 리스트 요소 제거 (RemoveAt, RemoveAt, RemoveAll)
- C# - 리스트에서 빈 문자열, null 제거
- C# - 리스트 두개로 분리, n개로 나누기
- C# - 문자열 뒤집기, Reverse()
- C# - 2차원 배열 복사, Clone
- C# - 문자열 배열을 문자열로 변환
- C# - 2차원 배열 선언, 초기화 방법
- C# - 배열 길이, 2차원 배열 길이
- C# - 두개의 배열을 하나로 합치기
- C# - 배열 중복 요소 제거
- C# - 배열에서 특정 요소 제거
- C# - Int 배열 정렬 (오름차순, 내림차순)