2012-09-07 3 views
-4

Есть ли встроенная функция в Linq для печати месяца Имя во время работы с LINQPAD?Печать месяца Название в Linq

Я хочу напечатать название месяца в следующем сценарии

var query = from e in Employees 
      let month=e.BirthDate.GetValueOrDefault() 
      let birthmonth=month.ToString("MMMM") 
      select birthmonth; 
      query.Dump(); 

При запуске этого он бросает NotSupportedException. Как напечатать название месяца в Linq to Sql?

+1

Пожалуйста, будьте более конкретными. Название месяца? В каком контексте? На ваш вопрос невозможно ответить, пока он такой расплывчатый. –

+0

Нет, linq не имеет встроенной функции для печати имени месяца. Вероятно, вы ищете что-то вроде 'DateTime.Now.ToString (« MMMM »)' ... – sloth

+0

Я могу получить имя месяца сегодняшней даты с помощью DateTime.Now.ToString («MMMM»). Но i я не могу получить имя месяца, взятого из таблицы. – user1575914

ответ

0

Вместо использования ToString, попробуйте string.Format. Что-то вроде:

var query = (from e in Employees 
      let month = e.BirthDate.GetValueOrDefault() 
      let birthmonth = string.Format("{0:MMMM}", month) 
      select birthmonth); 
query.Dump(); 

Это похоже на работу с моего локального тестирования, хотя это не входит как часть запроса SQL.

+0

Это работает. Спасибо МиГ !! – user1575914

0

Сделайте это в два этапа, чтобы получить месяцы из базы данных, а затем другой, используя Linq-To-Objects для выполнения форматирования.

var birthDates = Employees.Select(e => e.BirthDate).ToList(); 
var query = birthDates.Select(d => d != null ? d.ToString("MMMM") : "Null"); 
query.Dump(); 

Независимо ORM вы используете не может преобразовать строку форматирования части вас запрос в SQL, который работает на базе данных. Итак, сделав это за два шага и используя ToList для оценки inbetween, эта проблема преодолевает.

Смежные вопросы