Ну, есть три варианта, о которых я могу сразу подумать:
- Извлечь весь
DateTime
назад, затем извлечь месяц и отформатировать его на стороне клиента - Использовать
DateTime.Month
чтобы извлечь только месяц назад из базы данных, а затем отформатировать его на стороне клиента - Попробуйте получить форматирование (преобразование в текст) для работы с базой данных
ЛичноЯ бы не попробовал бы третий вариант - мне кажется, что он вряд ли сработает, по крайней мере без особых усилий.
Я подозреваю, что на самом деле просто потяните DateTime
назад и сделайте все на стороне клиента.Это очень легко сделать, и это обязательно сработает.Я ожидаю, что DateTime.Month
будет , вероятно, работать, но вы не собираетесь экономить очень большую пропускную способность сети, и вы будете заставлять сервер выполнять работу, которая, вероятно, простотак же просто сделать это для клиента.
Обратите внимание, что если вы все еще хотите, чтобы результаты были представлены в виде запроса, вы можете использовать AsEnumerable
, чтобы принудительно выполнить оставшуюся часть запроса на стороне клиента.Например:
var query = db.Customers
.Where(c => c.OrderCount > 500) // Or whatever query you want
.Select(c => new { c.Name, c.FirstOrder })
.AsEnumerable() // Do the rest of the query on the client
.Select(c => new { c.Name, c.Month = c.FirstOrder.ToString("MMM") });
РЕДАКТИРОВАТЬ: Как отмечено в комментариях, имеет смысл использовать DateTime.Month
на стороне сервера, если это действительно повлияет на результаты , например
var query = db.Customers.Where(c => c.FirstOrder.Month == 1)
...
... но в этих случаях я ожидаю, что это будет числовое значение, а не имя месяца.