2014-02-21 55 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