4

DateTime?日付があるすべての snullをに置き換えるにはどうすればよいDateTime.MaxValueですか?

私が試してみました:

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ます...

4

3 に答える 3

7

あなたはこれを行うことができます:

myDateTimeArray = myDateTimeArray.Select(dt => dt ?? DateTime.MaxValue).ToArray();

これにより、個々の要素ではなく、配列全体が置き換えられます。個々の要素を置き換える必要がある場合は、for代わりにループを使用してください。

于 2013-05-28T13:26:36.510 に答える
3

Enumerable.Selectを使用して、日付を新しい配列に射影します。

var newArray = myDateTimeArray.Select(x => x ?? DateTime.MaxValue).ToArray();

null 合体演算子( ) は、??null でない場合は左側のオペランドを返し、そうでない場合は右側のオペランドを返します。

于 2013-05-28T13:27:43.657 に答える