我有一个包含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);
}
那么看看上面的测试代码,我如何对行(升序或降序)进行排序,说“ID”或“名称”或我动态添加的任何其他属性?
更多信息,我希望像这样排序(这不起作用);
var newOrder = from r in rows
orderby ("Name") ascending
select r;
答案 0 :(得分:4)
不确定我是如何错过这个但无论如何这都有效,
var newOrder = rows.OrderByDescending(x => x["Name"]);
答案 1 :(得分:4)
WooHoo的回答不适用于Dynamic.ExpandoObject
;这有效:
var newOrder = rows.OrderByDescending(x =>((IDictionary<string,object>)x)["Name"]);