Как работает datetime и Как сравнить две даты в окнах ADO Entities? - PullRequest
0 голосов
/ 15 февраля 2019

В моей базе данных sql server есть таблица «Deposit» со столбцом «DepositDate», и ее тип - datetime.У меня есть строки с текущей датой, и одна из них - 2019-02-14 22: 26: 50.000. И сегодняшняя дата та же, я имею в виду 2019-02-14. Но если попытаться получить все сегодняшние строки по следующему коду,т работа.Я думаю, что это связано с тем временем, которое следует за датой.Но напишите сейчас, я интересуюсь только днем, но я хочу сохранить тип datetime в моей базе данных.Так должно ли время совпадать с датой, которую я ищу?Я использую Linq и Entities

Мне нравится, я не получаю ошибку, но не нахожу строку.возвращает пустое представление данных

DateTime TodayDate = Convert.ToDateTime(DateTime.Now.ToString());
 var deposit = (from u in db.Deposit
                                   where u.DepositDate == TodayDate
                                   select u).ToList();
                    if (deposit != null)
                    {
                        dgvDeposit.DataSource = null;
                        dgvDeposit.DataSource = deposit;
                    }

Я пытался даже, но я получаю сообщение об ошибке

дата не поддерживается в LINQ to ADO Entities

DateTime TodayDate = Convert.ToDateTime(DateTime.Now.Date);
where u.DepositDate.Value.Date == TodayDate

Iочень ценю вашу помощь

1 Ответ

0 голосов
/ 15 февраля 2019

Вы должны фильтровать между начальной и конечной датой, если хотите использовать любые индексы, которые у вас могут быть в DepositDate.Если вас не волнует, что есть Канонические функции дат , которые вы можете использовать для удаления времени из значения базы данных.

DateTime today = DateTime.Today;
DateTime tomorrow = today.AddDays(1);

var deposit = (from u in db.Deposit
               where u.DepositDate >= today && u.DepositDate < tomorrow
               select u).ToList();

Или как лямбда

var deposits = db.Deposit
                .Where(u => u.DepositDate >= today && u.DepositDate < tomorrow)
                .ToList();

В качестве дополнительного примечания, а также с точки зрения мнения, как правило, рекомендуется множественное число DbSet<T> свойств для вашего DbContext (например, db.Deposits).То же самое относится к вашей переменной deposit, так как она будет иметь тип List<Deposit>, который является коллекцией (2-й пример кода, который я изменил).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...