powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ ToString("yyyy-MM-dd")
7 сообщений из 7, страница 1 из 1
LINQ ToString("yyyy-MM-dd")
    #39111453
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть поле формата DateTime. Нужно вернуть в формате "yyyy-MM-dd".
Пушу так:
Код: c#
1.
2.
3.
4.
5.
6.
  from dirCustomers in dbLogin.DirCustomers
  where ...
  select new 
  {
     DirCustomersDate = dirCustomers.DirCustomersDate.ToString("yyyy-MM-dd")
  }


Получаю исключение:
Выражению linq to entities не удается распознать метод \"system.string tostring(system.string)\", поэтому его нельзя преобразовать в выражение хранилища.

Подскажите как с этим бороться.
П.С. Юзаю MS SQL 2014
...
Рейтинг: 0 / 0
LINQ ToString("yyyy-MM-dd")
    #39111480
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бороться с этим можно, используя ToList(), но не надо. Тут ошибка в подходе:
potkinНужно вернуть в формате "yyyy-MM-dd".Форматирование нужно произвести при выводе, а не при запросе. То есть у сервера надо запросить именно дату в виде даты, а отформатировать ее потом там, где это требуется.
...
Рейтинг: 0 / 0
LINQ ToString("yyyy-MM-dd")
    #39111777
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В примерах на мсдн есть пример как в LINQ указать формат даты .ToString("dd/MM/yyyy")) , прям в запросе.
Но у меня почему-то не работает.
Ну и у Клиента использую фреймворк ExtJS, как там переводить ... можно конечно, но лучше на сервере всё сделать, а то завтра перейду на что-то другое (на клиенте), потом всё переписывать.

Shocker.ProБороться с этим можно, используя ToList(), но не надо.
То есть получить результат запроса и сформировать свой JSON с исправлениями?
...
Рейтинг: 0 / 0
LINQ ToString("yyyy-MM-dd")
    #39111796
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinВ примерах на мсдн есть пример как в LINQ указать формат даты .ToString("dd/MM/yyyy")) , прям в запросе.
Но у меня почему-то не работает.
Ну и у Клиента использую фреймворк ExtJS, как там переводить ... можно конечно, но лучше на сервере всё сделать, а то завтра перейду на что-то другое (на клиенте), потом всё переписывать.

Shocker.ProБороться с этим можно, используя ToList(), но не надо.
То есть получить результат запроса и сформировать свой JSON с исправлениями?Переходите на WebAPI, там форматтеры за Вас сформируют нужный JSON, или нужный XML :)

Ну или задумайтесь над тем, что в WebAPI есть отдельные форматтеры для представления данных в том, или ином виде и сделайте по аналогии.

P.S.: вообще-то то, как Вы передаёте дату клиенту - это часть стандарта , так что не важно на что Вы там завтра перейдёте.
...
Рейтинг: 0 / 0
LINQ ToString("yyyy-MM-dd")
    #39111820
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
Так WebAPI и использую.

1. При таком запросе:
Код: c#
1.
2.
3.
4.
5.
from dirCustomers in dbLogin.DirCustomers
select new
{
  DirCustomersDate = dirCustomers.DirCustomersDate
}


получаю такой JSON:
Код: plaintext
1.
{"DirCustomersDate":"2013-04-11T11:33:00"}
Там символ "T" лишний. Как от него избавится?

2. При таком запросе:
Код: c#
1.
2.
3.
4.
5.
from dirCustomers in dbLogin.DirCustomers
select new
{
  DirCustomersDate = dirCustomers.DirCustomersDate.ToString()
}


получаю такой JSON:
Код: plaintext
1.
{"DirCustomersDate":"апр 11 2013 11:33AM"}
Это вообще извращение.

Другие варианты не работают, например:
Код: c#
1.
2.
3.
4.
5.
from dirCustomers in dbLogin.DirCustomers
select new
{
  DirCustomersDate = dirCustomers.DirCustomersDate.ToString("yyyy-MM-dd"),
}


Исключение: Выражению linq to entities не удается распознать метод \"system.string tostring(system.string)\", поэтому его нельзя преобразовать в выражение хранилища.
...
Рейтинг: 0 / 0
LINQ ToString("yyyy-MM-dd")
    #39111972
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinskyANA
Так WebAPI и использую.

1. При таком запросе:
Код: c#
1.
2.
3.
4.
5.
from dirCustomers in dbLogin.DirCustomers
select new
{
  DirCustomersDate = dirCustomers.DirCustomersDate
}


получаю такой JSON:
Код: plaintext
1.
{"DirCustomersDate":"2013-04-11T11:33:00"}
Там символ "T" лишний. Как от него избавится?
Он не лишний, это стандарт, смотрите ссылку выше.
...
Рейтинг: 0 / 0
LINQ ToString("yyyy-MM-dd")
    #39112338
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA
А, ну да ...
Просто ещё использую SQLite, там символа "Т" нет в JSON. То есть в SQLite "другой" формат выходных данных для типа дата. Можно с "Т", а можно и без.
Сколько Скул-серверов столько и проблем ...

П.С. Вот тут намечается проэктик с Informix, представляю, что там всплывёт.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / LINQ ToString("yyyy-MM-dd")
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]