可以订购动态类型
本文关键字:动态 类型 | 更新日期: 2023-09-27 18:36:08
假设我有以下代码:
dynamic myData = GetMyData();
foreach(dynamic d in myData.data)
{
Console.WriteLine(d.name);
}
如何按字母顺序写出所有名称? 如果我使用类似 List<MyClass>
的东西,我只会使用 myData.OrderBy(t => t.name)
,但是当我使用动态类型时,这似乎不起作用。
关于如何对这些值进行排序的任何建议?
Enumerable.OrderBy(myData, (Func<dynamic, dynamic>)(t => t.name));
这应该返回与myData.OrderBy(t => t.name)
正常返回的相同值。
由于OrderBy
是一种扩展方法,因此它不适用于动态类型。看到这个答案。
这可能
对你有用:
IEnumerable<dynamic> sequence = Enumerable.Cast<dynamic>(myData);
foreach (var result in sequence.OrderBy(x => x.name))
{
Console.WriteLine(result.name);
}
基本上在调用Cast<dynamic>
并转换为IEnumerable<dynamic>
之后,你可以做你喜欢的序列而不是单个值。
并不是说我实际上已经尝试过上述方法,但我相信它应该有效。