2012-11-09 65 views
0
form.myDataTable.Rows[i][2 * cs] = corr;     
form.myDataTable.Rows[i][2 * cs + 1] = "p" + Convert.ToString(col1) 
             + " p" + Convert.ToString(col2); 

我需要值以及相應名稱在2*cs+1列進行排序2*cs列。排序兩列由值編輯

我想是這樣的:

var corrvalues = new Dictionary(); 
correlationvalues["p" + Convert.ToString(col1) 
         + " p" + Convert.ToString(col2)] = corr; 
sortedvalues = correlationvalues.Values.OrderByDescending; 

我不清楚如何使用orderbydescending,我是新來的C#。感謝幫助。

+1

使用泛型。請。 –

+1

我編輯過你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

+0

好的,明白了。謝謝John和Thank You Mark,我是這個論壇的新手。謝謝 – user1783998

回答

0

OrderByDescending是一個函數,而不是一個屬性。它有一個必需的參數,它是一個函數,它在集合中獲取一個值(在您的情況下,爲correctionvalues.Values),並返回一個「鍵」用於比較目的。如果您只是想直接對這些值進行比較,則可以傳入標識lambda函數(例如x => x)。

var corrvalues = new Dictionary(); 
correlationvalues["p" + Convert.ToString(col1) 
         + " p" + Convert.ToString(col2)] = corr; 
sortedvalues = correlationvalues.Values.OrderByDescending(val => val); 

如果你的價值觀是更復雜的類型(如Person類),你要作爲排序依據某一特定領域(如Name),那麼你可以在一些經過是這樣的:

sorted = personDict.Values.OrderByDescending(person => person.Name); 

有關OrderByDescending的更多詳細信息,請參閱http://msdn.microsoft.com/en-us/library/system.linq.enumerable.orderbydescending.aspx

您還可以瞭解更多有關lambda表達式(如果你是新來的C#這是有用的)位置:http://msdn.microsoft.com/en-us/library/bb397687.aspx

+0

謝謝你編譯的代碼,沒有錯誤,測試它。 – user1783998