2014-02-21 21 views
0

目前,我想从我的程序注销3条信息:对外输出数组数据

  1. 的数组中的位置
  2. 这一立场
  3. 字典的键关联的值与此位置相关的价值

但是,我想我已经对自己应该如何完成感到困惑。可能有人请看看我的代码,告诉我什么,我做错了,因为它不输出我需要的信息:

float[] foo_array = new float[dictionary.Count]; 
dictionary.Values.CopyTo(foo_array, 0); 

Array.Sort(foo_array); 

foreach (string key in dictionary.Keys) 
{ 

    for(int i = 0; i < foo_array.Length; i++) 
    { 
     Debug.Log("Array position: " + i + " ARRAY VALUE : " + foo_array[i] + " key value: " + key); 
    } 
} 
+0

能否请您对“不输出我需要的信息”扩大?它是输出什么东西,还是输出别的东西而不是你期望的东西?请具体说明。 –

回答

0

我知道你在后遍历了它的位置,以及相关的密钥字典和价值。 你不需要的密钥复制到一个数组可以这样做:

var formatStrings = 
    dictionary.Select((kvp, index) => 
     string.Format(
      "Position: {0} Key: {1} Value: {2}", index, kvp.Key, kvp.Value)); 

foreach (var formatString in formatStrings) 
{ 
    Debug.Log(formatString); 
} 
+0

我将关键值放在数组中,因为我需要发送3个最小值。当他们的值随时间变化时,我需要数组不断更新自己,因此数组中的前三个位置是可能的最小值 – N0xus

+1

您可以执行'dictionary.OrderBy(_ => _.Value).Select(... )'以保持排序。如果您在复制值后对数组进行排序,则索引位置将不再与字典相关联。 – Martin

+0

我不知道,但是,我需要三个最小值插入其他东西,我认为最简单的方法来处理插入阵列位置 – N0xus