2012-03-23 4 views
4

나는 ExpandoObjects 사전을 포함하는 목록을 가지고 있습니다. 이 표를 표에 바인딩했지만 지금은 목록을 정렬하고 싶습니다. 목록 정렬 방법 ExpandoObjects가 포함 된 <dynamic>

 var rows = new List<dynamic>(); 
     for (int i = 0; i < 1000; i++) 
     { 
      dynamic expandy = new ExpandoObject(); 
      var dictionary = (IDictionary<string, object>)expandy; 

      dictionary.Add("ID", i); 
      dictionary.Add("Name", "Name" + i); 
      rows.Add(dictionary); 
     } 

그래서 시험 내가 행을 정렬 할 방법을 위의 코드를보고 (오름차순 또는 분야별로) "ID"또는 "이름"또는 I 동적으로 추가 한 다른 속성에 대해 말을?

조금 더 많은 정보, 나는 이것을 (이 나던 일)처럼 분류하려고합니다.

  var newOrder = from r in rows 
        orderby ("Name") ascending 
        select r; 
+2

당신은 항상 그것에 사전을 넣어 동적 왜? –

+0

var 행 = 새 목록으로 변경한다고 가정합니다. > 어떻게 정렬합니까? – WooHoo

+0

어떻게 분류하고 싶습니까? 사전에서 어떤 가치를 사용하고 싶습니까? –

답변

4

나는이 놓친 어쨌든이 어떻게 작동하는지 확실하지,

var newOrder = rows.OrderByDescending(x => x["Name"]); 
2

Dynamic.ExpandoObject 작동하지 않습니다 사랑 나누기의 대답; 이 작품은 :

var newOrder = rows.OrderByDescending(x =>((IDictionary<string,object>)x)["Name"]); 
+0

"Dynamic.ExpandoObject에서 작동하지 않습니다"는 의미는 무엇입니까? "이것"은 무엇입니까? 당신 자신의 대답이나 다른 대답을 참조합니까? – Cleb

+0

나는 코드 var newOrder = rows.OrderByDescending (x => x [ "Name"])을 참조했다; Dynamic.ExpandoObject에서 사용될 때. –

+0

위의 WooHoo의 답변을 의미합니까? – Cleb