Возможно, необходимо посмотреть на наличие и проверка клиентской и серверной стороны. Если бы что-нибудь проскальзывает мимо клиентской проверки, можно тогда не стесняться выдавать исключение, если бизнес-объект был бы сделан недопустимым.
Один подход, который я использовал, должен был применить пользовательские атрибуты к свойствам бизнес-объекта, которые описали правила проверки. например:
[MinValue(10), MaxValue(20)]
public int Value { get; set; }
атрибуты могут тогда обрабатываться и использоваться, чтобы автоматически создать и методы проверки клиентской и серверной стороны, избежать проблемы дублирования бизнес-логики.
Проверка того, не будет ли Math.Abs (diff.TotalMinutes) == 0
этого сделать, нет - это проверка, являются ли они точно то же самое.
Вы пытаетесь проверить, совпадают ли они в одной минуте или разницы между ними меньше минуты? Для первого используйте:
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);
}
Для второго, используйте:
where Math.Abs((dateTime1 - dateTime2).TotalMinutes) < 1
Вы должны подумать о том, какой результат вы хотите получить в случае, если один локальный, а другой, кстати, в UTC ...
Обратите внимание, что здесь нет ничего специфичного для LINQ - если вы используете LINQ to Objects. Если вы используете LINQ to SQL, то, очевидно, вы не можете использовать локальные методы, и нам придется поискать еще раз ...
РЕДАКТИРОВАТЬ: Мне все еще неясен ваш вопрос. Если вам нужно, чтобы они точно совпадали с датой / временем, это '
Как насчет
where (Math.Floor(datetime1.Ticks / 600000000) == Math.Floor(datetime2.Ticks / 600000000))
?
Спасибо, Аллен, сделаю это (все еще пытаясь понять, как именно работает этот процесс!). Вот фрагмент кода, указывающий на ответ, который я придумал изначально:
(Math.Abs (datetime1.Subtract (datetime2) .TotalMinutes) == 0)
Справочная информация: в предложении WHERE моего запроса linq (следовательно, однострочном) мне нужно проверить, совпадают ли datetime1 и datetime2. Рассматриваемые значения datetime - это даты штампов для других значений, используемых в запросе.