2012-03-23 53 views
4

我有一個列表,其中包含一個ExpandoObjects字典。我將它綁定到一個網格,但現在我想排序列表。如何排序列表<dynamic>包含ExpandoObjects

 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); 
     } 

所以看測試代碼上面我將如何排序行(升序或decending)說的「ID」或「姓名」,或者說我動態地添加任何其他財產?

有點更多的信息,我期待這樣排序(這不工作);

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

爲什麼讓它的動態,如果你總是把一個字典中呢? – 2012-03-23 14:50:50

+0

假設我將其更改爲var rows = new List >我將如何對它進行排序? – WooHoo 2012-03-23 15:08:59

+0

你想如何排序?你想使用哪個字典中的值? – 2012-03-23 15:22:48

回答

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 2015-07-07 08:06:57

+0

我指的是代碼var newOrder = rows.OrderByDescending(x => x [「Name」]);在Dynamic.ExpandoObject中使用時。 – 2015-07-08 07:52:25

+0

你的意思是WooHoo從上面的答案? – Cleb 2015-07-08 08:07:47