在DateTime中替换null ?[] with DateTime.MaxValue使用LINQ
本文关键字:DateTime with MaxValue LINQ 使用 替换 null | 更新日期: 2023-09-27 18:15:47
如何将日期为null
的所有DateTime?
替换为DateTime.MaxValue
?
I have try:
Array.ConvertAll(myDateTimeArray, a => a = a.HasValue ? a : DateTime.MaxValue);
也:
myDateTimeArray.Where(a => a == null).ToList().ForEach(a => a = DateTime.MaxValue);
之后,我想做这样的事情:
DateTime minDate = myDateTimeArray.Min(a => a.Value);
,但我得到一个InvalidOperationException
,因为a.Value
是null
…
你可以这样做:
myDateTimeArray = myDateTimeArray.Select(dt => dt ?? DateTime.MaxValue).ToArray();
这将替换整个数组,而不是它的单个元素。如果您需要替换单个元素,请使用for
循环。
使用Enumerable将日期投影到一个新的数组中。选择:
var newArray = myDateTimeArray.Select(x => x ?? DateTime.MaxValue).ToArray();
空合并操作符(??
)如果左操作数不为空,则返回左操作数,否则返回右操作数。
可枚举对象。最小方法没有重载,它接受DateTime
(或DateTime?
)值的集合。你可以使用Enumerable。实现自己的Min
方法的聚合方法:
DateTime? result = myDateTimeArray.Where(x => x != null)
.DefaultIfEmpty(null)
.Aggregate((x, y) => x < y ? x : y);
如果myDateTimeArray
为空或myDateTimeArray
中的所有元素都为null
,则返回null
,否则返回myDateTimeArray
中DateTime
的最小值。