使用属性变量对列表进行排序

本文关键字:排序 列表 属性 变量 | 更新日期: 2023-09-27 18:20:13

假设我有这个进程列表或任何其他对象

List<Process> listProcess = new List<Process>();

我可以用这行listProcess.OrderBy(p => p.Id);对它进行排序但若我只有在运行时获得的属性的字符串名称呢。我想,我应该使用反射来获取属性对象。我可以使用orderby方法吗?还是应该使用Sort然后传递自己的比较器?

使用属性变量对列表进行排序

您可以查看评论中提到的帖子。或者,你可以使用像这样的简单反射来实现这一点

var sortedList = list.OrderBy(o => o.GetType().GetProperty(propName).GetValue(o));

何处

List<object> list; //a list of any object(s)
string propName; //name of the property to be used in OrderBy