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列を値で並べ替える必要があります。また、列内の対応する名前も並べ替える必要があります2*cs+1

私はこのようにしようとしています:

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

降順でorderbyを使用する方法がわかりません。c#は初めてです。手伝ってくれてありがとう。

4

1 に答える 1

0

OrderByDescendingは関数であり、プロパティではありません。これには必須パラメーターが1つあります。これは、コレクション内の値(この場合はcorrectionvalues.Values)を受け取り、比較のために使用する「キー」を返す関数です。値自体を直接比較したいだけの場合は、アイデンティティラムダ関数(例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を参照してください。

ラムダ式(C#を初めて使用する場合に便利です)の詳細については、http://msdn.microsoft.com/en-us/library/bb397687.aspxを参照することもできます。

于 2012-11-09T19:24:51.240 に答える