如何在c#中对动态列表进行排序
发布时间:2020-12-16 00:24:57 所属栏目:百科 来源:网络整理
导读:function void sortDynamicData(typeOfClass,SortKey){Listdynamic results = null; //results might be of any type it may contain students data or books data or professors data,hence I took as dynamicresults = services.GetMyresults(typeOfClass)
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(); ... ... ... } 我的问题是我想基于sortKey对结果进行排序 解决方法
如果可能的话,我认为如果您的数据是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(); } 用法:您需要在列表中提供数据类型,例如sort by Name属性,其中dynamic是Person类型 var result = Sort<Person>(people,"Name"); ================ 更新: 如果您无法提供数据类型,可以尝试使用Sort() public List<dynamic> Sort(List<dynamic> input,string property) { return input.OrderBy(p => p.GetType() .GetProperty(property) .GetValue(p,null)).ToList(); } 用法: 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"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |