이것은 오래된 질문이지만 C # 6 답변에 넣을 것이라고 생각했습니다. 코드에 튜플 목록으로 쉽게 입력 할 수있는 테스트 데이터를 설정해야하는 경우가 종종 있습니다. 몇 가지 확장 기능을 사용하면 각 항목의 이름을 반복하지 않고도이 멋진 컴팩트 형식을 사용할 수 있습니다.
var people= new List<Tuple<int, int, string>>() {
{1, 11, "Adam"},
{2, 22, "Bill"},
{3, 33, "Carol"}
}.Select(t => new { Id = t.Item1, Age = t.Item2, Name = t.Item3 });
이것은 IEnumerable을 제공합니다-추가 할 수있는 목록을 원하면 ToList ()를 추가하십시오.
이 마법은 https://stackoverflow.com/a/27455822/4536527에 설명 된대로 튜플에 대한 사용자 정의 확장 Add 메소드에서 비롯됩니다 .
public static class TupleListExtensions {
public static void Add<T1, T2>(this IList<Tuple<T1, T2>> list,
T1 item1, T2 item2) {
list.Add(Tuple.Create(item1, item2));
}
public static void Add<T1, T2, T3>(this IList<Tuple<T1, T2, T3>> list,
T1 item1, T2 item2, T3 item3) {
list.Add(Tuple.Create(item1, item2, item3));
}
// and so on...
}
내가 싫어하는 유일한 것은 유형이 이름과 분리되어 있다는 것입니다.하지만 실제로 새로운 클래스를 만들고 싶지 않다면이 접근법은 여전히 읽을 수있는 데이터를 가질 수 있습니다.
new[] { new{ Id = (int?)null, Name = "Foo" }, new { Id = (int?)1, Name = "Foo" }}