Ini adalah pertanyaan lama, tapi saya pikir saya akan memasukkan jawaban C # 6 saya. Saya sering harus mengatur data uji yang mudah dimasukkan dalam kode sebagai daftar tupel. Dengan beberapa fungsi ekstensi, dimungkinkan untuk memiliki format yang bagus dan ringkas ini, tanpa mengulangi nama pada setiap entri.
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 });
Ini memberikan IEnumerable - jika Anda ingin daftar yang dapat Anda tambahkan kemudian tambahkan ToList ().
Keajaiban ini berasal dari ekstensi kustom Tambahkan metode untuk tuple, seperti yang dijelaskan di 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...
}
Satu-satunya hal yang saya tidak suka adalah bahwa jenis dipisahkan dari nama-nama, tetapi jika Anda benar-benar tidak ingin membuat kelas baru maka pendekatan ini masih akan membiarkan Anda memiliki data yang dapat dibaca.
new[] { new{ Id = (int?)null, Name = "Foo" }, new { Id = (int?)1, Name = "Foo" }}