का उपयोग कर 2 सूचियों का उपयोग करके एक शब्दकोश बनाएं, मैं 2 सूचियों में से एक शब्दकोश बनाने की कोशिश कर रहा हूं जहां एक सूची में कुंजी होती है और एक सूची में मान होते हैं। मैं इसे लूप के लिए उपयोग कर सकता हूं लेकिन मैं LINQ का उपयोग करके ऐसा करने का कोई तरीका ढूंढने की कोशिश कर रहा हूं। नमूना कोड सहायक होगा। धन्यवाद!!!!LINQ
LINQ
उत्तर
.NET4 में आप में निर्मित Zip
विधि दो दृश्यों, एक ToDictionary
कॉल के बाद विलय करने के लिए इस्तेमाल कर सकते हैं:
var keys = new List<int> { 1, 2, 3 };
var values = new List<string> { "one", "two", "three" };
var dictionary = keys.Zip(values, (k, v) => new { Key = k, Value = v })
.ToDictionary(x => x.Key, x => x.Value);
List<string> keys = new List<string>();
List<string> values = new List<string>();
Dictionary<string, string> dict = keys.ToDictionary(x => x, x => values[keys.IndexOf(x)]);
यह निश्चित रूप से मानता है कि प्रत्येक सूची की लंबाई समान है और कुंजी अद्वितीय हैं।
अद्यतन:This answer गैर-तुच्छ आकार के सूचियों के लिए कहीं अधिक कुशल और उपयोग किया जाना चाहिए।
आप एक Select
अभिव्यक्ति में सूचकांक शामिल कर सकते हैं इस कुशल बनाने के लिए:
var a = new List<string>() { "A", "B", "C" };
var b = new List<string>() { "1", "2", "3" };
var c = a.Select((x, i) => new {key = x, value = b[i]}).ToDictionary(e => e.key, e => e.value);
foreach (var d in c)
Console.WriteLine(d.Key + " = " + d.Value);
Console.ReadKey();
आप इस कोड का उपयोग और पूरी तरह से काम कर सकते हैं।
सी # कोड:
var keys = new List<string> { "Kalu", "Kishan", "Gourav" };
var values = new List<string> { "Singh", "Paneri", "Jain" };
Dictionary<string, string> dictionary = new Dictionary<string, string>();
for (int i = 0; i < keys.Count; i++)
{
dictionary.Add(keys[i].ToString(), values[i].ToString());
}
foreach (var data in dictionary)
{
Console.WriteLine("{0} {1}", data.Key, data.Value);
}
Console.ReadLine();
आउटपुट स्क्रीन:
बहुत बोझिल एक कार्य – netfed
var dic = keys.Zip(values, (k, v) => new { k, v })
.ToDictionary(x => x.k, x => x.v);
क्या यह वास्तव में [ल्यूकएचएच] (http://stackoverflow.com/users/55847/lukeh) के [5 वर्षीय उत्तर] के लिए कुछ भी जोड़ता है (http://stackoverflow.com/a/ 2434647/215380)? – Rawling
मैं नहीं बल्कि इसके स्थान पर इस का उपयोग कर के, एक पाश का उपयोग करेंगे। उत्तर के लिए अभी भी +1। – Steven
वह था। धन्यवाद!!! – VNarasimhaM
आप LINQ के बजाय लूप का उपयोग क्यों करेंगे? मैंने सोचा कि यह कोड लूप के मुकाबले बहुत अधिक सटीक और पठनीय है। – VNarasimhaM