Формат DateTime в запросе EF - PullRequest
2 голосов
/ 21 июля 2010

У меня есть таблица базы данных, которая содержит информацию для полученных файлов. Одним из столбцов является DateTime, который указывает, когда файл был получен. Мне нужно получить четкий список месяцев с годом (ММ / ГГГГ) для полученных файлов. Мне нужно вытащить это из этой таблицы. В этой таблице может быть тысячи записей, поэтому способ, которым я сделал это в Oracle, заключается в том, что в моем операторе select я форматирую дату и время как MM / YYYY и выполняю сортировку desc с отдельным предложением. Это даст мне список только месяцев, когда был получен файл. Очень быстро и эффективно.

Теперь мне нужно сделать это с помощью EFv4 .... вот запрос, который я использовал в Oracle. Кто-нибудь знает, как я могу перевести это, используя один из способов запроса EFs?

select distinct
    to_char( i.date_received, 'MMYYYY')) MonthAndYear
    from table1
    order by MonthAndYear desc

1 Ответ

2 голосов
/ 21 июля 2010

Ну, не делай этого, как Oracle. Сделай это как LINQ.

var q = (from i in Context.Table1
         select new
         {
             Month = i.date_received.Month,
             Year = i.date_received.Year
         }).Distinct();

Чтобы получить DateTime:

var r = q.AsEnumerable().Select(d => new DateTime(d.Year, d.Month, 1));
...