Я бы рекомендовал хранить все даты в UTC, когда они помещаются в базу данных. Это будет согласованным.
Хранение таких дат, похоже, работает хорошо ...
YYYY-MM-DD
В первую очередь, IQueryable<T>
расширяется эти IEnumerable<T>
интерфейс, таким образом, что-либо, что можно сделать с "плоскостью" IEnumerable<T>
, можно также сделать с IQueryable<T>
.
IEnumerable<T>
просто имеет GetEnumerator()
метод, который возвращается Enumerator<T>
, для которого можно назвать MoveNext()
метод для итерации через последовательность [1 116] T.
, Что IQueryable<T>
имеет, это IEnumerable<T>
не делает , два свойства в particular— тот, который указывает на поставщик запроса (например, LINQ поставщику SQL) и другой указывающий выражение запроса, представляющее эти IQueryable<T>
объект как абстрактное синтаксическое дерево во время выполнения проходимое, которое может быть понято под данным поставщиком запроса (по большей части, Вы не можете дать LINQ SQL-выражению к LINQ поставщику Объектов без выданного исключения).
выражение может просто быть константным выражением самого объекта или более сложного дерева составленного набора операторов запроса и операндов. Поставщик запроса IQueryProvider.Execute()
или IQueryProvider.CreateQuery()
методы называют с , Выражение передало ему, и затем или результат запроса или другой IQueryable
возвращаются, соответственно.
Главная разница - то, что операторы LINQ для IQueryable<T>
берут Expression
объекты вместо делегатов, означая логику пользовательского запроса, которую это получает, например, предикат или селектор значения, в форме дерева выражений вместо делегата в методе.
IEnumerable<T>
является большим для работы с последовательностями, которые выполнены с помощью итераций в оперативной памяти, но IQueryable<T>
допускает из вещей памяти как источник удаленных данных, таких как база данных или веб-сервис. то, Где выполнение запроса будет выполненным "в процессе" , обычно все, которое это требуется, является кодом (как код) для выполнения каждой части запроса.
, Где выполнение будет выполнено из процесса , логика запроса должна быть представлена в данных, таким образом, что поставщик LINQ может преобразовать его в соответствующую форму для выполнения из памяти - является ли это запросом LDAP, SQL или что бы то ни было.
IEnumerable<T>
и IQueryable<T>
IEnumerable<T>
по сравнению с IQueryable<T>
" IEnumerable
, IQueryable
, IObservable
, и IQbservable