2017-11-25 139 views
-2

用两个数组填充字典。我不知道如何使用foreach从它获取数据列表。例如:a 17,l 16 ....请告诉我该怎么做?从字典中获取数据列表

string[] words = { "a", "l", "c", "d", "h", "o", "t" }; 
int[] times = { 17, 16, 1, 02, 11, 19, 21 }; 
Dictionary<string[], int[]> data= new Dictionary<string[], int[]>(); 
data.Add(words, times); 
     foreach (KeyValuePair<string[], int[]> pair in data) 
     { 
      Console.WriteLine("Key: {0}, Value: {1}", pair.Key, pair.Value); 
     } 

// output: Key: System.String[], Value: System.Int32[] 
+1

你是什么意思的数据列表? – Sajeetharan

+1

你的问题不清楚。你的意思是你想用这些数据填充字典吗?以什么形式?对于每个单词作为关键将所有数字作为值?对于每件作品都有一个数字作为价值?你有什么尝试? –

+2

你可能不想要一个'Dictionary [string [],int []>''你想要一个'Dictionary ' –

回答

1

从你的例子好像你正在寻找其中每个索引我想要的关键是在words第i个项目,并在times第i个项目的价值Dictionary<string,int>

foreach方法将是:

var dict = new Dictionary<string,int>(); 
for(int i = 0; i < words.Lenth; i++) 
{ 
    dict.Add(words[i], times[i]; 
} 

注意,这假定的次数的相同的量times至少为words,如果不将导致IndexOutOfRangeException

LINQ的做法将是:

// C# 7.0 
var dict = words.Zip(times, (w,t) => (w,t)).ToDictionary(key => key.w, value => value.t); 

// C# prior to 7.0 
var dict = words.Zip(times, (w,t) => new { w,t }) 
       .ToDictionary(key => key.w, value => value.t); 

注意Zip将通过收集与下位计数返回的项目。