Wyszukiwanie wpisów pomiędzy datami, ominięcie czasu w DateTime

0

Załóżmy, że chcemy wylistować listę zamówień między dwoma datami.
Data zamówienia to DateTime

var orders = _dbContext.Orders
    .Where(c => c.IssueDate >= request.Start && c.IssueDate <= request.End)
    .ToList();

z frontu przychodzi mi np. start = 2023-03-02 0000 ; end = 2023-03-02 0000
mam zamówienia w tym dniu np. 2023-03-02 1545.0569456
Dostaję pusty wynik. Słusznie. Ale chciałbym ominąć czas porównując daty.
używam .net 6 z ef6

// edit: czy taka modyfikacja jest OK czy robicie to inaczej?

.Where(c => c.IssueDate.Date >= request.Start && c.IssueDate.Date <= request.End)
0
Dlaczego nie zrobić:
.Where(c => c.IssueDate >= request.Start.Date && c.IssueDate <= request.End.Date.AddDays(1).AddMiliseconds(-1))
``` ?
2
gswidwa1 napisał(a):
Dlaczego nie zrobić:
.Where(c => c.IssueDate >= request.Start.Date && c.IssueDate <= request.End.Date.AddDays(1).AddMiliseconds(-1))
``` ?

To nie jest najlepszy pomysł.
zamiast && c.IssueDate <= request.End.Date.AddDays(1).AddMiliseconds(-1) lepiej użyć operatora mniejszości && c.IssueDate < request.End.Date.AddDays(1)
W czasie tej jednej milisekundy może wydarzyć się sporo interesujących rzeczy

0

Znając życie za jakiś czas okaże się że na froncie potrzebna jest możliwość wprowadzania daty łącznie z godziną, minutą, sekundą.

Wolałbym zrobić tak:


if(request.Start == request.End)
{
  request.End = request.End.AddDays(1);
}

var orders = _dbContext.Orders
    .Where(c => c.IssueDate >= request.Start && c.IssueDate <= request.End)
    .ToList();

1 użytkowników online, w tym zalogowanych: 0, gości: 1