यह एक पुराना प्रश्न है, लेकिन मुझे लगा कि मैं अपने 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 () जोड़ें।
मैजिक कस्टम एक्सटेंशन से आता है, tuples के लिए तरीके जोड़ें, जैसा कि https://stackoverflow.com/a/27455822/4546527 पर वर्णित है ।
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" }}