1

DateTimeaが既にデータベースにあるかどうかを確認しようとしています。

何が起こっているのかをよりよく理解するために、以下のコードを分割しましたが、最善の努力にもかかわらず、dateChecks は常に空のリストを返します。

    var MyDate = DateTime.Now;

    foreach (var milestone in mtMilestone.Milestones)
    {

        var checkIfAlreadyPulled = _ipdb.JsonDataReleases.
            Where(x => x.ReleaseId == mtMilestone.ReleaseId).ToList();

        var dateChecks = checkIfAlreadyPulled.
            Where(x => EntityFunctions.Equals(x.LastUpdated, MyDate)).ToList();

        if (!dateChecks.Any())
        {
            /* do stuff what this does it it makes a new entry into the JsonDataReleases 
            db using MyDate as the new LastUpdated value. */ 
        }

        /* Does more unrelated stuff... */

    }

編集:だから私はそれを理解しました!

DateTime.Now が LastUpdated 値として SQL データベースに保存されていたときに、ミリ秒が切り落とされていることがわかりました。

        var now = DateTime.Now;
        var MyDate= new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second);
4

1 に答える 1

1

LastUpdatedフィールドに日付と時刻が格納されている場合、Where句は、同じ正確な日付と時刻を持つアイテムのみを選択しますMyDate。日付を比較するだけの場合は、 .Date両側を比較する必要があります。

var dateChecks = checkIfAlreadyPulled.
    Where(x => x.LastUpdated.Date == MyDate.Date).ToList();
于 2012-09-05T19:43:23.877 に答える