以下のようなオブジェクトの一覧(MyData
クラス)があり、LINQクエリを使用してSecondDate
プロパティの制約を満たすものだけを取得し、すべてのプロパティに基づいてこの制約を満たすアイテム。LINQを使用してNullable値の並べ替え規則を実装する
public class MyData
{
public Nullable<DateTime> FirstDate {get; set;}
public DateTime SecondDate {get; set;}
public TimeSpan SimpleInterval {get; set;}
public double SimpleValue {get; set;}
...
}
私は、次のクエリを書いたが、私はNullable <DateTime> FirstDate
プロパティを処理する方法がわかりません。このプロパティがnull
に設定されているアイテムは、このプロパティ以外のフィールドの値が同じでない別のアイテムよりも低い値にソートする必要があります。あなたはDateTime.MinValueに等しい任意のFirstDate
性質を持っていない場合は、より多くの意図を表現することがnull合体演算子を、使用することができ、あるいは、
var items = from item in list
where ((now - item.SecondDate).TotalSeconds < threshold))
orderby item.FirstDate.HasValue descending,
item.FirstDate.GetValueOrDefault() descending,
item.SecondDate descending,
item.SimpleInterval descending,
item.SimpleValue descending,
select item;
:
// public static void main
double threshold = ... // some initialization
DateTime now = DateTime.Now;
List<MyData> list = new List<MyData>();
...
var items = from item in list
where ((now - item.SecondDate).TotalSeconds < threshold))
orderby item.FirstDate descending
orderby item.SecondDate descending
orderby item.SimpleInterval descending
orderby item.SimpleValue descending
select item
'default(DateTime)'は 'DateTime.MinValue'と等しいので、' HasValue'呼び出しはこの状況で冗長ではありませんか? –
@ rich.okelly:いいえ、1つは、すべてのnull結果の前にすべてのnullでない 'DateTime.MinValue'結果を正しくソートします。 *おそらく*このようなnull以外の結果はありませんが、私のコードは一般的な方法で要件を満たしています。 –
本当に、そのチェックは、私がそれを削除する前に私の元の答えにあったそれは不必要だった...私の悪いと確信していた! –