如何对包含ExpandoObjects的List <dynamic>进行排序

Woo*_*Hoo 5 expandoobject

我有一个包含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);
        }
Run Code Online (Sandbox Code Playgroud)

那么看看上面的测试代码我如何排序(升序或降序)说"ID"或"名称"或我动态添加的任何其他属性?

更多信息,我希望像这样排序(这不起作用);

            var newOrder = from r in rows
                     orderby ("Name") ascending 
                     select r;
Run Code Online (Sandbox Code Playgroud)

Woo*_*Hoo 5

不知道我是怎么错过这个的,但无论如何这有效,

var newOrder = rows.OrderByDescending(x => x["Name"]);
Run Code Online (Sandbox Code Playgroud)


Tho*_*ded 5

WooHoo 的答案不适用于Dynamic.ExpandoObject; 这有效:

var newOrder = rows.OrderByDescending(x =>((IDictionary<string,object>)x)["Name"]);
Run Code Online (Sandbox Code Playgroud)