C# 3에서 LINQ가 등장하면서 데이터 컬렉션을 처리하는 코드를 작성하는 방법에 혁명적 변화가 있었다. LINQ는 컬렉션 내의 개별 항목들에 대해 다양한 작업을 수행할 수 있는 방법을 제시하기도 했는데, 특정 값을 다른 값으로 변환하거나 결과에서 일부 항목을 필터링하거나 개별 항목의 특성을 기반으로 컬렉션을 정렬하는 등의 작업을 수행할 수 있다. 그럼에도 불구하고 LINQ는 컬렉션이 아닌 데이터에 대해서는 그리 효과적인 도구를 제공해 주지 못했다.
익명 타입의 경우 또 다른 형태의 조합 가능성을 제공하기는 하지만, 제한된 코드 블록 내에서만 사용할 수 있다는 제약이 있다. 메서드의 반환 타입에 이름을 지정할 수는 없는 노릇이므로 익명 타입을 반환하는 메서드를 선언할 수도 없다.
C# 7에는 데이터 복합 구성을 간단하게 할 수 있을 뿐 아니라 복합 구성으로부터 개별 요소를 손쉽게 분리할 수 있는 튜플이 새롭게 포함되었다. 이전에도 System.Tuple을 사용했으므로 이미 튜플을 활용했었다고 생각할 수 있는데, 이 또한 어느 정도 맞는 말이다. 다만, 이는 프레임워크 차원에서 지원되는 부분이었고 언어 차원에서는 지원되지 않았다. 조금 혼란스러운 것은 C# 7에서조차 언어 차원에서 지원하는 튜플 타입이 존재하는 것은 아니며, SystemValueTuple이라는 새로운 타입을 사용한다는 점이다. 이에 대해서는 11.4절에서 좀 더 자세히 살펴볼 것이다. System.Tuple과 비교하는 내용은 11.5.1절에서 다룬다.