加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在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");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读