■ ParallelEnumerable 클래스의 AsParallel/Aggregate 확장 메소드를 사용해 합계를 구하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
using System; using System.Collections.Generic; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 합계 구하기 - GetSummary(sourceEnumerable) /// <summary> /// 합계 구하기 /// </summary> /// <param name="sourceEnumerable">소스 열거 가능형</param> /// <returns>합계</returns> private static int GetSummary(IEnumerable<int> sourceEnumerable) { int result = sourceEnumerable.AsParallel().Aggregate ( seed : 0, func : (summary, item) => summary + item ); return result; } #endregion #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main(string[] argumentArray) { int[] valueArray = new int[] { 10, 20, 30, 20, 10, 30, 40 , 50 }; int summrary = GetSummary(valueArray); Console.WriteLine(summrary); } #endregion } } |
TestProject.zip
■ ParallelEnumerable 클래스의 AsParallel/Sum 확장 메소드를 사용해 합계를 구하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
using System; using System.Collections.Generic; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 합계 구하기 - GetSummary(sourceEnumerable) /// <summary> /// 합계 구하기 /// </summary> /// <param name="sourceEnumerable">소스 열거 가능형</param> /// <returns>합계</returns> private static int GetSummary(IEnumerable<int> sourceEnumerable) { int summary = sourceEnumerable.AsParallel().Sum(); return summary; } #endregion #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main(string[] argumentArray) { int[] valueArray = new int[] { 10, 20, 30, 20, 10, 30, 40 , 50 }; int summrary = GetSummary(valueArray); Console.WriteLine(summrary); } #endregion } } |
TestProject.zip
■ AsyncEnumerable 클래스의 CountAwaitAsync 확장 메소드를 사용해 비동기 열거 가능 시퀀스에서 조건을 충족하는 요소 수를 구하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 값 열거 가능형 구하기 (비동기) - GetValueEnumerableAsync() /// <summary> /// 값 열거 가능형 구하기 (비동기) /// </summary> /// <returns>값 열거 가능형</returns> private static async IAsyncEnumerable<int> GetValueEnumerableAsync() { for(int i = 0; i < 10; i++) { await Task.Delay(i * 100); yield return i; } } #endregion #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> /// <returns>태스크</returns> private static async Task Main() { int count = await GetValueEnumerableAsync().CountAwaitAsync ( async value => { await Task.Delay(10); return value % 2 == 0; } ); Console.WriteLine(count); } #endregion } } |
TestProject.zip
■ AsyncEnumerable 클래스의 CountAsync 확장 메소드를 사용해 비동기 열거 가능 시퀀스에서 조건을 충족하는 요소 수를 구하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 값 열거 가능형 구하기 (비동기) - GetValueEnumerableAsync() /// <summary> /// 값 열거 가능형 구하기 (비동기) /// </summary> /// <returns>값 열거 가능형</returns> private static async IAsyncEnumerable<int> GetValueEnumerableAsync() { for(int i = 0; i < 10; i++) { await Task.Delay(i * 100); yield return i; } } #endregion #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> /// <returns>태스크</returns> private static async Task Main() { int count = await GetValueEnumerableAsync().CountAsync(value => value % 2 == 0); Console.WriteLine(count); } #endregion } } |
TestProject.zip
■ AsyncEnumerable 클래스의 Where 확장 메소드를 사용해 동기 조건자 기반 비동기 열거 가능 시퀀스를 필터링하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 값 열거 가능형 구하기 (비동기) - GetValueEnumerableAsync() /// <summary> /// 값 열거 가능형 구하기 (비동기) /// </summary> /// <returns>값 열거 가능형</returns> private static async IAsyncEnumerable<int> GetValueEnumerableAsync() { for(int i = 0; i < 10; i++) { await Task.Delay(i * 100); yield return i; } } #endregion #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> /// <returns>태스크</returns> private static async Task Main() { IAsyncEnumerable<int> valueEnumerable = GetValueEnumerableAsync().Where(value => value % 2 == 0); await foreach(int value in valueEnumerable) { Console.WriteLine(value); } } #endregion } } |
TestProject.zip
■ AsyncEnumerable 클래스의 WhereAwait 확장 메소드를 사용해 비동기 조건자 기반 비동기 열거 가능 시퀀스를 필터링하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 값 열거 가능형 구하기 (비동기) - GetValueEnumerableAsync() /// <summary> /// 값 열거 가능형 구하기 (비동기) /// </summary> /// <returns>값 열거 가능형</returns> private static async IAsyncEnumerable<int> GetValueEnumerableAsync() { for(int i = 0; i < 10; i++) { await Task.Delay(i * 100); yield return i; } } #endregion #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> /// <returns>태스크</returns> private static async Task Main() { IAsyncEnumerable<int> valueEnumerable = GetValueEnumerableAsync().WhereAwait ( async value => { await Task.Delay(10); return value % 2 == 0; } ); await foreach(int value in valueEnumerable) { Console.WriteLine(value); } } #endregion } } |
TestProject.zip
■ System.Linq.Async 누겟을 설치하는 방법을 보여준다. 1. Visual Studio를 실행한다. 2. [도구] / [NuGet 패키지 관리자] / [패키지 관리자 콘솔] 메뉴를 실행한다.
더 읽기
■ ParallelEnumerable 클래스의 AsParallel<TSource> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
using System; using System.Collections.Generic; using System.Linq; using System.Threading; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { IEnumerable<int> enumerable = new List<int> { 10, 20, 30, 40, 50 }; ParallelQuery<int> query = enumerable.AsParallel().Select(value => Calculate(value)); foreach(int value in query) { Console.WriteLine(value); } Console.ReadKey(false); } #endregion #region 계산하기 - Calculate(value) /// <summary> /// 계산하기 /// </summary> /// <param name="value">값</param> /// <returns>계산 값</returns> private static int Calculate(int value) { Thread.Sleep(300); return value * 2; } #endregion } } |
TestProject.zip
■ Enumerable 클래스의 Concat<T> 확장 메소드를 사용해 배열을 복사하는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
Random random = new Random(DateTime.Now.Millisecond); byte[] sourceArray1 = new byte[1000000]; byte[] sourceArray2 = new byte[1000000]; byte[] sourceArray3 = new byte[1000000]; byte[] targetArray = new byte[3000000]; for(int i = 0; i < 1000000; i++) { sourceArray1[i] = (byte)random.Next(0, 255); sourceArray2[i] = (byte)random.Next(0, 255); sourceArray3[i] = (byte)random.Next(0, 255); } IEnumerable<byte> targetEnumerable = sourceArray1.Concat(sourceArray2).Concat(sourceArray3); |
■ Expression<T> 클래스를 사용해 람다식을 만드는 방법을 보여준다. ▶ 예제 코드 (C#)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
using System; using System.Linq.Expressions; ParameterExpression paremeterExpression = Expression<Func<int, bool>>.Parameter(typeof(int), "p"); Expression<Func<int, bool>> expression = Expression<Func<int, bool>>.Lambda<Func<int, bool>> ( Expression<Func<int, bool>>.LessThan ( paremeterExpression, Expression<Func<int, bool>>.Constant(5) ), paremeterExpression ); Func<int, bool> function = (Func<int, bool>)expression.Compile(); bool result = function(4); Console.WriteLine(result); |
———————————————————————————————————————— ————————————————————————————————————————
■ Enumerable 클래스의 DefaultIfEmpty<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
using System; using System.Collections.Generic; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { List<int> resultList = new List<int>(); foreach(var result in resultList.DefaultIfEmpty()) { Console.WriteLine(result); } } #endregion } } |
■ Enumerable 클래스의 ElementAtOrDefault<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
using System; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 에러가 발생한다. //Console.WriteLine("11번째 항목 : {0}", integerArray.ElementAt(10)); Console.WriteLine("11번째 항목 : {0}", integerArray.ElementAtOrDefault(10)); } #endregion } } |
■ Enumerable 클래스의 ElementAt<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
using System; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Console.WriteLine("6번째 항목 : {0}", integerArray.ElementAt(5)); // 에러가 발생한다. //Console.WriteLine("11번째 항목 : {0}", integerArray.ElementAt(10)); } #endregion } } |
■ Enumerable 클래스의 SingleOrDefault<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
using System; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 에러가 발생한다. //Console.WriteLine("조건을 충족하는 단일 항목 : {0}", integerArray.Single(n => n % 11 == 0)); Console.WriteLine("조건을 충족하는 단일 항목 : {0}", integerArray.SingleOrDefault(n => n % 11 == 0)); } #endregion } } |
■ Enumerable 클래스의 LastOrDefault<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
using System; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 에러가 발생한다. //Console.WriteLine("조건을 충족하는 마지막 항목 : {0}", integerArray.Last(n => n % 11 == 0)); Console.WriteLine("조건을 충족하는 마지막 항목 : {0}", integerArray.LastOrDefault(n => n % 11 == 0)); } #endregion } } |
■ Enumerable 클래스의 Single<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
using System; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Console.WriteLine("조건을 충족하는 단일 항목 : {0}", integerArray.Single(n => n % 9 == 0)); // 에러가 발생한다. //Console.WriteLine("조건을 충족하는 단일 항목 : {0}", integerArray.Single(n => n % 2 == 0)); } #endregion } } |
■ Enumerable 클래스의 Last<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
using System; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Console.WriteLine("마지막 항목 : {0}", integerArray.Last()); Console.WriteLine("조건을 충족하는 마지막 항목 : {0}", integerArray.Last(n => n % 4 == 0)); } #endregion } } |
■ Enumerable 클래스의 FirstOrDefault<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
using System; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; // 에러가 발생한다. //Console.WriteLine("조건을 충족하는 첫번째 항목 : {0}", integerArray.First(n => n % 11 == 0)); Console.WriteLine("조건을 충족하는 첫번째 항목 : {0}", integerArray.FirstOrDefault(n => n % 11 == 0)); } #endregion } } |
■ Enumerable 클래스의 First<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
using System; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Console.WriteLine("첫번째 항목 : {0}", integerArray.First()); Console.WriteLine("조건을 충족하는 첫번째 항목 : {0}", integerArray.First(n => n % 4 == 0)); } #endregion } } |
■ Enumerable 클래스의 Cast<T> 확장 메소드를 사용하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
using System; using System.Collections; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { ArrayList arrayList = new ArrayList(); arrayList.AddRange(new object[] { 1, 2, 3, 4, 5 }); var resultEnumerable = arrayList.Cast<int>(); //IEnumerable<int> 타입으로 변환한다. foreach(var result in resultEnumerable) { Console.Write(".." + result); } Console.WriteLine(); Console.WriteLine(); } #endregion } } |
※ arrayList에 int 타입이 아닌 다른 타입의 요소가 포함된 경우
더 읽기
■ Enumerable 클래스의 OfType<T> 확장 메소드를 사용해 특정 타입의 요소를 구하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
using System; using System.Collections; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { ArrayList arrayList = new ArrayList(); arrayList.AddRange(new object[] { 1, 2, "MAX", 3, 4, "MIN", 5 , "AVERAGE" }); var resultEnumerable = arrayList.OfType<int>(); Console.WriteLine("문자열 항목만 추출한다."); foreach(var result in resultEnumerable) { Console.Write(".." + result); } Console.WriteLine(); Console.WriteLine(); } #endregion } } |
■ Enumerable 클래스의 Union<T> 확장 메소드를 사용해 데이터의 합집합을 구하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
using System; using System.Collections.Generic; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray1 = { 1, 2, 3, 4, 5, 6 }; Console.WriteLine("정수 배열 1"); foreach(int i in integerArray1) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); int[] integerArray2 = { 3, 4, 5, 6, 7, 8 }; Console.WriteLine("정수 배열 2"); foreach(int i in integerArray2) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); IEnumerable<int> resultEnmuerable = integerArray1.Union(integerArray2); Console.WriteLine("정수 배열 1과 정수 배열 2의 합집합"); foreach(int i in resultEnmuerable) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); } #endregion } } |
■ Enumerable 클래스의 Concat<T> 확장 메소드를 사용해 배열을 병합하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
namespace TestProject; /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] sourceArray1 = { 1, 2, 3, 4, 5, 6 }; Console.WriteLine("소스 배열 1"); foreach(int i in sourceArray1) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); int[] sourceArray2 = { 3, 4, 5, 6, 7, 8 }; Console.WriteLine("소스 배열 2"); foreach(int i in sourceArray2) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); int[] targetArray = sourceArray1.Concat(sourceArray2).ToArray(); Console.WriteLine("소스 배열 1 + 소스 배열 2"); foreach(int i in targetArray) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); } #endregion } |
■ Enumerable 클래스의 Except<T> 확장 메소드를 사용해 데이터의 차집합을 구하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray1 = { 1, 2, 3, 4, 5, 6 }; Console.WriteLine("정수 배열 1"); foreach(int i in integerArray1) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); int[] integerArray2 = { 3, 4, 5, 6, 7, 8 }; Console.WriteLine("정수 배열 2"); foreach(int i in integerArray2) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); IEnumerable<int> resultEnmuerable1 = integerArray1.Except(integerArray2); Console.WriteLine("차집합 : 정수 배열 1 - 정수 배열 2"); foreach(int i in resultEnmuerable1) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); IEnumerable<int> resultEnmuerable2 = integerArray2.Except(integerArray1); Console.WriteLine("차집합 : 정수 배열 2 - 정수 배열 1"); foreach(int i in resultEnmuerable2) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); } #endregion } } |
■ Enumerable 클래스의 Intersect<T> 확장 메소드를 사용해 데이터의 교집합을 구하는 방법을 보여준다. ▶ Program.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private #region 프로그램 시작하기 - Main() /// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { int[] integerArray1 = { 1, 2, 3, 4, 5, 6 }; Console.WriteLine("정수 배열 1"); foreach(int i in integerArray1) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); int[] integerArray2 = { 3, 4, 5, 6, 7, 8 }; Console.WriteLine("정수 배열 2"); foreach(int i in integerArray2) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("정수 배열 1과 정수 배열 2의 교집합"); var resultEnumerable = integerArray1.Intersect(integerArray2); foreach(int i in resultEnumerable) { Console.Write(".." + i); } Console.WriteLine(); Console.WriteLine(); } #endregion } } |