Dies ist eine alte Frage, aber ich dachte, ich würde meine C # 6-Antwort eingeben. Ich muss oft Testdaten einrichten, die einfach als Liste von Tupeln in den Code eingegeben werden können. Mit ein paar Erweiterungsfunktionen ist es möglich, dieses schöne, kompakte Format zu haben, ohne die Namen bei jedem Eintrag zu wiederholen.
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 });
Dies ergibt eine IEnumerable - wenn Sie eine Liste möchten, die Sie hinzufügen können, fügen Sie einfach ToList () hinzu.
Die Magie kommt von der benutzerdefinierten Erweiterung Add-Methoden für Tupel, wie unter https://stackoverflow.com/a/27455822/4536527 beschrieben .
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...
}}
Das einzige, was mir nicht gefällt, ist, dass die Typen von den Namen getrennt sind. Wenn Sie jedoch wirklich keine neue Klasse erstellen möchten, können Sie mit diesem Ansatz trotzdem lesbare Daten erhalten.
new[] { new{ Id = (int?)null, Name = "Foo" }, new { Id = (int?)1, Name = "Foo" }}