您如何在 C# 和 LINQ 中使用在运行时为 List<dynamic> 定义的参数进行 OrderBy,其中每个动态都是一个 ExpandoObject
How do you OrderBy in C# and LINQ using a parameter defined in runtime for a List<dynamic> where each dynamic is an ExpandoObject
我有一个在 运行 时间生成并存储为 List<dynamic>
的数据,名为 "Reports"。
"Reports" 包含许多 "Report",它们也在 运行 时间作为新的 ExpandoObject().
生成
每个 "Report" 在 运行 被添加到 "Reports".
用户能够select他们想属性查看(预定义)。
我想使用 LINQ OrderBy 按用户定义 属性 排序 "Reports"。
您可以转换为 IDictionary<string, object>
并使用带有 属性 名称字符串的方括号索引器,例如
dynamic report1 = new ExpandoObject();
report1.Name = "Foo";
dynamic report2 = new ExpandoObject();
report2.Name = "Bar";
var reports = new[] { report1, report2 }.ToList();
var sortBy = "Name";
var first = reports.OrderBy(x => ((IDictionary<string, object>)x)[sortBy]).First();
Console.WriteLine(first.Name); // Bar
我有一个在 运行 时间生成并存储为 List<dynamic>
的数据,名为 "Reports"。
"Reports" 包含许多 "Report",它们也在 运行 时间作为新的 ExpandoObject().
每个 "Report" 在 运行 被添加到 "Reports".
用户能够select他们想属性查看(预定义)。
我想使用 LINQ OrderBy 按用户定义 属性 排序 "Reports"。
您可以转换为 IDictionary<string, object>
并使用带有 属性 名称字符串的方括号索引器,例如
dynamic report1 = new ExpandoObject();
report1.Name = "Foo";
dynamic report2 = new ExpandoObject();
report2.Name = "Bar";
var reports = new[] { report1, report2 }.ToList();
var sortBy = "Name";
var first = reports.OrderBy(x => ((IDictionary<string, object>)x)[sortBy]).First();
Console.WriteLine(first.Name); // Bar