分精度を使用して、2 つの日時値を比較して等価性 (まったく同じ) を判断する必要があります。これが最善の方法でしょうか? 私の日付には秒とミリ秒を含めることができますが、数分までしか考慮したくありません。
where (Math.Abs(datetime1.Subtract(datetime2).TotalMinutes) == 0)
それをしないかどうかをチェックMath.Abs(diff.TotalMinutes) == 0
します、いいえ-それはそれらが完全に同じであるかどうかをチェックします。
それらが同じ分を持っているかどうか、またはそれらが1分未満離れているかどうかを確認しようとしていますか?最初に、以下を使用します。
where RoundToMinute(dateTime1) == RoundToMinute(dateTime2)
宣言した:
public static DateTime RoundToMinute(DateTime time)
{
return new DateTime(time.Year, time.Month, time.Day,
time.Hour, time.Minute, 0, time.Kind);
}
2つ目は、次を使用します。
where Math.Abs((dateTime1 - dateTime2).TotalMinutes) < 1
ちなみに、1つがローカルで、もう1つがUTCである場合に、結果をどのようにするかを検討する必要があります...
ここではLINQ固有のものは何もないことに注意してください-LINQtoObjectsを使用していると仮定します。LINQ to SQLを使用している場合は、明らかにローカルメソッドを使用できないため、もう一度確認する必要があります...
編集:私はあなたの質問についてまだ非常に不明確です。それらを完全に同じ日付/時刻にする必要がある場合は、簡単です(ローカルとUTCの問題の可能性は別として)。
where dateTime1 == dateTime2
ただし、それでは、質問のタイトルに「分単位の精度」と記載されているのか、質問の本文に「分単位の精度まで使用している」と記載されているのかという疑問が生じます。
どうですか
where (Math.Floor(datetime1.Ticks / 600000000) == Math.Floor(datetime2.Ticks / 600000000))
?
ありがとう、アレン、そうします(プロセスがどのように機能するかを正確に理解しています!)ここに、私が最初に思いついた答えを示すコードスニペットがあります:
(Math.Abs(datetime1.Subtract(datetime2).TotalMinutes) == 0)
背景: linq クエリの WHERE 句 (したがってワンライナー) 内で、datetime1 と datetime2 がまったく同じかどうかを確認する必要があります。検討中の日時値は、クエリで使用される他の値のスタンプ日付です。