LINQ 메서드 중 하나로, 컬렉션(시퀀스) 내부에 있는 하위 컬렉션을 펼쳐서(flatten) 단일 컬렉션으로 만드는 데 사용
다차원 데이터(컬렉션 내부의 컬렉션)를 1차원 데이터로 변환합니다.
각 요소를 매핑하여 새로운 컬렉션을 반환하지만, 하위 컬렉션의 모든 요소를 하나의 컬렉션으로 병합합니다.
var words = new List<string> { "hello", "world" };
// 각 문자열을 문자로 분리하고, 전체를 하나의 시퀀스로 만듦
var characters = words.SelectMany(word => word.ToCharArray());
Console.WriteLine(string.Join(", ", characters));
//출력값 : h, e, l, l, o, w, o, r, l, d
var dictionary = new Dictionary<string, int[]> {
{"A", new[] {1, 2}},
{"B", new[] {3, 4}},
{"C", new[] {5}}
};
// Key와 Value를 펼쳐 하나의 튜플 시퀀스로 생성
var pairs = dictionary.SelectMany(kvp => kvp.Value.Select(v => (kvp.Key, v)));
foreach (var pair in pairs)
{
Console.WriteLine($"Key: {pair.Key}, Value: {pair.v}");
}
/* 출력값
Key: A, Value: 1
Key: A, Value: 2
Key: B, Value: 3
Key: B, Value: 4
Key: C, Value: 5 */
지리는 메서드