sat*_*r V 4 c# sorting list dynamic
function void sortDynamicData(typeOfClass,SortKey)
{
List<dynamic> results = null; //results might be of any type it may contain students data or books data or professors data, hence I took as dynamic
results = services.GetMyresults(typeOfClass); //returns list of dynamic objects
results = results.OrderBy(SortKey).ToList();
...
...
...
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我想根据sortKey对结果进行排序任何帮助都会非常明显.
Phu*_*yen 14
如果可能的话,我认为如果您的数据是T列表而不是动态列表,则更好,更容易使用
如果您无法将输入数据更改为List:
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();
}
Run Code Online (Sandbox Code Playgroud)
用法:您需要在列表中提供数据类型,例如,按名称列出List属性,其中dynamic是Person类型
var result = Sort<Person>(people, "Name");
Run Code Online (Sandbox Code Playgroud)
================
更新:
如果您无法提供数据类型,可以尝试使用Sort()
public List<dynamic> Sort(List<dynamic> input, string property)
{
return input.OrderBy(p => p.GetType()
.GetProperty(property)
.GetValue(p, null)).ToList();
}
Run Code Online (Sandbox Code Playgroud)
用法:
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");
Run Code Online (Sandbox Code Playgroud)