2012-11-09 2 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 열을 값으로 정렬하고 해당 이름을 열 2*cs+1으로 정렬해야합니다.두 열을 값순으로 정렬

나는이 같은 노력하고 있어요 :

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

나는 C#을 새로운 오전, orderbydescending를 사용하는 방법을 명확하지입니다. 도와 주셔서 감사합니다.

+1

사용 제네릭. 부디. –

+1

제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –

+0

알겠습니다. John and Thank You Mark,이 포럼에 처음 오신 것을 감사드립니다. 감사합니다 – user1783998

답변

0

OrderByDescending은 속성이 아닌 함수입니다. 하나의 필수 매개 변수가 있습니다.이 매개 변수는 컬렉션의 값 (귀하의 경우 correctionvalues.Values)을 가져와 비교 목적으로 사용할 "키"를 반환하는 함수입니다. 값 자체에서 직접 비교하려는 경우 ID 람다 함수 (예 : x => x)를 전달하면됩니다. 당신의 가치 (예 : Person 클래스로) 더 복잡한 유형은 당신이 특정 필드에 정렬 할 경우

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

(예 : 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

+0

고맙습니다, 코드를 컴파일하고 오류를 테스트하지 않았습니다. – user1783998

관련 문제