按编辑的值对两列进行排序

时间:2012-11-09 19:09:08

标签: c#

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#的新手。谢谢你的帮助。

1 个答案:

答案 0 :(得分: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)进行排序,那么您可以传递这样的内容:< / p>

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