반응형
Enumerable.Zip<TFirst, TSecond, TResult>(IEnumerable<TFirst>, IEnumerable<TSecond>, Func<TFirst, TSecond, TResult>) 메서드
public static System.Collections.Generic.IEnumerable<TResult> Zip<TFirst,TSecond,TResult> (this
System.Collections.Generic.IEnumerable<TFirst> first, System.Collections.Generic.IEnumerable<TSecond> second, Func<TFirst,TSecond,TResult> resultSelector);
매개변수
first IEnumerable<TFirst>
병합할 첫 번째 시퀀스
second IEnumerable<TSecond>
병합할 두 번째 시퀀스
resultSelector Func<TFirst, TSecond, TResult>
두 시퀀스의 요소를 병합하는 방법을 지정하는 함수
반환
IEnumerable<TResult>
두 입력 시퀀스의 병합된 요소가 들어있는 IEnumerable<T>
예제 코드
int[] numbers = { 1, 2, 3, 4 };
string[] words = { "one", "two", "three" };
var numbersAndWords = numbers.Zip(words, (first, second) => first + " " + second);
foreach (var item in numbersAndWords)
Console.WriteLine(item);
// This code produces the following output:
// 1 one
// 2 two
// 3 three
첫번째 시퀀스의 각 요소를 두 번째 시퀀스에서 동일한 인덱스가 있는 요소와 병합한다. 시퀀스에 동일할 수의 요소가 없는 경우 메서드는 시퀀스가 해당 요소 중 하나의 끝에 도달할 때까지 시퀀스를 병합한다. 예를 들어 한 시퀀스에 3개의 요소가 있고 다른 시퀀스에 4개의 요소가 있는 경우 결과 시퀀스에는 3개의 요소만 들어간다.
즉, Enumerable.Zip은 가로 데이터들의 나열을 세로 데이터의 쌍으로 바꿔준다.
추가 예제 코드
using System;
using System.Collections.Generic;
using System.Linq;
public partial class Program
{
static void Main(string[] args)
{
var list = new List<int>() { 1, 2, 3, 4, 5 };
var string_list = new List<string>() { "a", "b", "c", "d", "e" };
var string_list2 = new List<string>() { "f", "g", "h", "i", "j" };
var float_list = new List<float>() { 1.2F, 3.54F, 5.36F, 8.3F, 4.31F };
var result = list.Zip(string_list).Zip(string_list2).Zip(float_list);
Console.WriteLine("-------------------------------------------");
foreach (var item in result)
{
Console.WriteLine($"item : {item}");
Console.WriteLine($"first item : {item.First}");
Console.WriteLine($"second item : {item.Second}");
Console.WriteLine($"first first item : {item.First.First}");
Console.WriteLine($"first second item : {item.First.Second}");
Console.WriteLine($"first first first item : {item.First.First.First}");
Console.WriteLine($"first first second item : {item.First.First.Second}");
Console.WriteLine("-------------------------------------------");
}
}
}
'프로그래밍 > C# LINQ' 카테고리의 다른 글
C# LINQ - Enumerable.TakeWhile (0) | 2024.03.28 |
---|---|
C# 표준 질의 연산자(Standard Query Operators) (1) | 2024.02.26 |
C# Linq - Enumerable.Take() (0) | 2024.02.26 |
C# Linq - Enumerable.Reverse() (0) | 2024.02.19 |
C# Linq - Enumerable.OfType() (1) | 2024.02.16 |
댓글