【发布时间】:2019-06-21 18:48:48
【问题描述】:
这将为我提供我的开始日期列表:(它们存储为 STRING)
var startDate = myValues.Select(t => t.StartDate).ToList();
我只需要它从中选择最早的日期值。如果它是一个空字符串,那么这也是赢家,如果没有空字符串,那么只看哪个是真正最早的。
有没有办法我可以使用LINQ 和结合这部分和我上面的部分来一次找到它?而不是单独编写更多逻辑来从该列表中找到最小日期?
【问题讨论】:
-
如果您知道它们可以解析为
DateTime,您可以使用静态Parse方法将每个项目转换为DateTime,然后选择Min值:@987654327 @ -
我认为 DateTime.Parse 不适用于空字符串?您可能必须将自定义比较器传递给 Min 方法,该方法检查字符串是否为空/空,否则它调用 DateTime.Parse 方法
-
新的 DateTime 将给出最小日期 (1/1/01)。所以请尝试以下操作: DateTime startDate = myValues.Select(t => (t.StartDate == string.Empty) ? new DateTime() : DateTime.Parse(t.StartDate)).Min(t => t.StartDate);
-
如果值不为空或不是有效的
DateTime对象怎么办?你只是想选择第一个,返回null,还是抛出异常(或其他)?
标签: c# linq linq-to-objects