C'est une vieille question, mais je pensais que je mettrais ma réponse C # 6. Je dois souvent configurer des données de test qui sont facilement saisies dans le code sous forme de liste de tuples. Avec quelques fonctions d'extension, il est possible d'avoir ce joli format compact, sans répéter les noms sur chaque entrée.
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 });
Cela donne un IEnumerable - si vous voulez une liste que vous pouvez ajouter, ajoutez simplement ToList ().
La magie vient des méthodes d'ajout d'extensions personnalisées pour les tuples, comme décrit sur https://stackoverflow.com/a/27455822/4536527 .
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...
}
La seule chose que je n'aime pas, c'est que les types sont séparés des noms, mais si vous ne voulez vraiment pas créer une nouvelle classe, cette approche vous permettra toujours d'avoir des données lisibles.
new[] { new{ Id = (int?)null, Name = "Foo" }, new { Id = (int?)1, Name = "Foo" }}