如果可能的话,我认为如果您的数据是 T 列表而不是动态列表,则使用起来会更好、更容易
如果您无法将输入数据更改为列表:
public List<dynamic> Sort<T>(List<dynamic> input, string property)
{
var type = typeof(T);
var sortProperty = type.GetProperty(property);
return input.OrderBy(p => sortProperty.GetValue(p, null)).ToList();
}
用法:您需要提供列表中数据的类型,例如按名称属性排序列表,其中动态为 Person 类型
var result = Sort<Person>(people, "Name");
===============
Update:
如果您无法提供数据类型,您可以尝试此 Sort()
public List<dynamic> Sort(List<dynamic> input, string property)
{
return input.OrderBy(p => p.GetType()
.GetProperty(property)
.GetValue(p, null)).ToList();
}
Usage:
var people = new List<dynamic>
{
new Person { Name = "Person 5" },
new Person { Name = "Person 2" },
new Person { Name = "Person 9" },
new Person { Name = "Person 1" }
};
var result = Sort(people, "Name");