使用LINQ将DateTime?[]中的null替换为DateTime.MaxValue

huz*_*zle 4 c# linq datetime replace nullable

我怎么能代替所有DateTime?S其中日期是nullDateTime.MaxValue

我试过了:

Array.ConvertAll(myDateTimeArray, a => a = a.HasValue ? a : DateTime.MaxValue);
Run Code Online (Sandbox Code Playgroud)

并且:

myDateTimeArray.Where(a => a == null).ToList().ForEach(a => a = DateTime.MaxValue);
Run Code Online (Sandbox Code Playgroud)

之后我想做类似的事情:

DateTime minDate = myDateTimeArray.Min(a => a.Value);
Run Code Online (Sandbox Code Playgroud)

但我得到的InvalidOperationException,因为a.Valuenull...

das*_*ght 7

你可以这样做:

myDateTimeArray = myDateTimeArray.Select(dt => dt ?? DateTime.MaxValue).ToArray();
Run Code Online (Sandbox Code Playgroud)

这将取代整个阵列,而不是其各个元素.如果需要替换单个元素,请改用for循环.

  • 或者使用具有相同lambda表达式的ConvertAll. (4认同)