c# - C# 排序列表通过它的属性,即日期时间字符串
问题描述
我有一个列表,该列表的每个项目都是用户定义的类,它具有类型为字符串但其内容为日期时间的属性,如下所示;
StringAsDate="23/10/2020 17:12:00"
类未知{ ..., StringAsDate, ... }
T列表列表
我想对列表进行降序排序,该列表是容器 DateTime 的字符串,我必须在最后保留列表的格式。
我可以通过蛮力做到这一点,但我正在寻找高效和优雅的方式。
谢谢。
解决方案
根据您对答案的评论,您正在寻找基于反射的解决方案。
反射部分,根据名称获取属性的值:
x.GetType().GetProperty(propertyName).GetValue(x, null)
试试这个:
var propetyName = "StringAsDate";
var listSorted = list.OrderByDescending(x => DateTime.Parse(Convert.ToString(x.GetType().GetProperty(propertyName).GetValue(x, null))));
如果Property
已经是类型,则DateTime
强制转换就足够了
var propetyName = "StringAsDate";
var listSorted = list.OrderByDescending(x => (DateTime)x.GetType().GetProperty(propertyName).GetValue(x, null));
推荐阅读
- oracle - 外部表和目录对象
- excel - 无法将选择范围引用到任何特定工作表
- javascript - 如何使用响应式表单获取完整的下拉对象项?
- c# - 如何在为 HTC VIVE 统一工作时将一个对象粘贴到另一个对象位置
- matlab - 如何从点垫文件中加载变量列表
- php - 函数语法似乎没问题,代码不起作用(functions.php)
- angular - 有谁知道如何在不使用 ngBootstrap 的情况下使用 Bootstrap 创建 Angular 8 DatePicker?
- python - 使用正则表达式的子集熊猫数据框
- java - java的反向猜谜游戏
- r-markdown - R 降价语法