किसी शब्दकोष के मूल्यों की सूची को एक सरणी में बदलने का सबसे कुशल तरीका क्या है?
उदाहरण के लिए, अगर मेरे पास एक Dictionaryजगह Keyहै Stringऔर Valueहै Foo, तो मैं प्राप्त करना चाहता हूंFoo[]
मैं वीएस 2005, सी # 2.0 का उपयोग कर रहा हूं
जवाबों:
// dict is Dictionary<string, Foo>
Foo[] foos = new Foo[dict.Count];
dict.Values.CopyTo(foos, 0);
// or in C# 3.0:
var foos = dict.Values.ToArray();
using System.Linq;
मान पर एक ToArray () फ़ंक्शन है:
Foo[] arr = new Foo[dict.Count];
dict.Values.CopyTo(arr, 0);
लेकिन मुझे नहीं लगता कि यह कुशल है (मैंने वास्तव में कोशिश नहीं की है, लेकिन मुझे लगता है कि यह इन सभी मूल्यों को कॉपी करता है)। क्या आपको वास्तव में एक ऐरे की जरूरत है? यदि नहीं, तो मैं IEnumerable पास करने की कोशिश करूंगा:
IEnumerable<Foo> foos = dict.Values;
यदि आप linq का उपयोग करना चाहते हैं, तो आप निम्नलिखित प्रयास कर सकते हैं:
Dictionary<string, object> dict = new Dictionary<string, object>();
var arr = dict.Select(z => z.Value).ToArray();
मुझे नहीं पता कि कौन सा तेज या बेहतर है। दोनों मेरे लिए काम करते हैं।
dict.Values.ToArray()एक ही बात करता है, लेकिन एक प्रतिनिधि के माध्यम से प्रत्येक मूल्य के उपरि के बिना।
इन दिनों, आपके पास LINQ उपलब्ध होने के बाद, आप शब्दकोश कीज़ और उनके मानों को एक स्ट्रिंग में बदल सकते हैं।
आप निम्नलिखित कोड का उपयोग कर सकते हैं:
// convert the dictionary to an array of strings
string[] strArray = dict.Select(x => ("Key: " + x.Key + ", Value: " + x.Value)).ToArray();
// convert a string array to a single string
string result = String.Join(", ", strArray);