Bu eski bir soru, ama C # 6 cevabımı vereceğimi düşündüm. Sıklıkla tuples listesi olarak kod içine kolayca girilen test verilerini ayarlamak zorundayım. Birkaç uzantı işlevi ile, her girişteki adları tekrar etmeden bu güzel, kompakt biçime sahip olmak mümkündür.
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 });
Bu bir IEnumerable verir - ekleyebileceğiniz bir liste istiyorsanız ToList () ekleyin.
Sihir, özel uzantıdan gelir . Https://stackoverflow.com/a/27455822/4536527 adresinde açıklandığı gibi Tuples için yöntemler ekleyin .
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...
}
Sevmediğim tek şey, türlerin isimlerden ayrılmasıdır, ancak gerçekten yeni bir sınıf yapmak istemiyorsanız, bu yaklaşım yine de okunabilir verilere sahip olmanıza izin verecektir.
new[] { new{ Id = (int?)null, Name = "Foo" }, new { Id = (int?)1, Name = "Foo" }}