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