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;

我不清楚如何使用 orderbydescending,我是 C# 新手。感谢帮助。

4

1 回答 1

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

于 2012-11-09T19:24:51.240 回答