#asp.net-mvc #entity-framework #entity-framework-6
#asp.net-mvc #сущность-фреймворк #entity-framework-6
Вопрос:
Мне трудно выделить дату с помощью Entity Framework 6, например, у меня есть это в моей базе данных:
идентификатор пользователя | назначенная дата |
---|---|
1 | 2020-12-09 18:58:38.213 |
2 | 2020-12-09 20:59:38.213 |
1 | 2020-12-09 22:13:38.214 |
1 | 2020-12-10 18:27:38.213 |
1 | 2021-01-05 10:27:38.213 |
Для пользователя 1
я хочу, чтобы он возвращался:
2020-12-09
2020-12-10
2021-01-05
Это то, что у меня есть в detalle.cs
модели:
public DateTime? FechaAsignacionAlistado { get; set; }
Это то, что у меня есть в моем репозитории:
public IList<DetalleSolicitud> GetDetallesPorUsuarioParaAsignacion(string userId)
{
return _context.DetalleSolicituds
.Include(a => a.HistorialAsignacionAlistadors)
.Include(s => s.Solicitudes.Pedido.ReservasProducs.Select(a => a.DetalleTalla.Producto))
.Where(a => a.AlistadorId == userId).ToList();
}
Что я пробовал, но не работает (я не знаю, что я делаю):
public IList<DetalleSolicitud> GetDetallesPorUsuarioParaAsignacion(string userId)
{
return _context.DetalleSolicituds
.Include(a => a.HistorialAsignacionAlistadors)
.Include(s => s.Solicitudes.Pedido.ReservasProducs.Select(a => a.DetalleTalla.Producto))
.GroupBy(a => a.FechaAsignacionAlistado).Distinct()
.Where(a => a.AlistadorId == userId).ToList();
}
Как мне этого добиться?
Комментарии:
1. Здесь есть несколько вопросов: 1. Используете ли вы
.netcore
проект? 2: ВашиDateTime
данные отличаются, потому что они разныеhours, minutes and seconds
. Вы хотите исключить данные, которые дублируются вyear, month, and day
?2. 1. исправлено, это так
asp.net mvc
. 2. Я хочу игнорироватьhours, minutes and seconds
. Во всяком случае, я получил это, используяDbFunctions.TruncateTime((DateTime)a.FechaAsignacionAlistado)
3. Ваш
FechaAsignacionAlistado
должен быть обнуляемым? Могу ли я это изменить?4. Что я могу вам помочь, так это:
_context.DetalleSolicituds.Include(a => a.HistorialAsignacionAlistadors).Include(s => s.Solicitudes.Pedido.ReservasProducs.Select(a => a.DetalleTalla.Producto)).Where(a => a.AlistadorId == userId).GroupBy(a => a.FechaAsignacionAlistado.ToShortDateString()).Distinct().ToList();
,но для этого нужно, чтобы вы удалили?
….5. Рад, что вы можете это решить :).
Ответ №1:
Я получил это, используя a .Groupby
и a .Select
, и работал отлично.
public IEnumerable<DetalleSolicitud> GetDetallesPorUsuarioParaAsignacion(string userId)
{
return _context.DetalleSolicituds
.Include(a => a.HistorialAsignacionAlistadors)
.Include(s => s.Solicitudes.Pedido.ReservasProducs.Select(a => a.DetalleTalla.Producto))
.Where(a => a.AlistadorId == userId)
.GroupBy(a => DbFunctions.TruncateTime((DateTime)a.FechaAsignacionAlistado))
.ToList().Select(x => new DetalleSolicitud { FechaAsignacionAlistado = x.Key });
}