Проверьте версию вашей СУБД и версию EF, поддерживают ли они DATEPART
метод
Например,
sqlserver 2017, есть таблица, подобная приведенной ниже
CREATE TABLE [Table1](
[col_datetime] [datetime] NULL
);
insert into [Table1]
select '2019/01/02 03:04:05'
, а затем запрос ef
Table1s.Select(w => new { month = Convert.ToString(w.Col_datetime.Value.Month)})
он запросит ниже sql
SELECT CONVERT(NVarChar,DATEPART(Month, [t0].[col_datetime])) AS [month]
FROM [Table1] AS [t0]
, если он не поддерживается, то он получит ошибку LINQ to Entities does not recognize the method 'System.String ToString(Int32)' method, and this method cannot be translated into a store expression.
, если вам придется сделать это безфункция поддержки, вы можете ToList () сначала сохранить данные в память, а затем выбрать
Table1s.Where(w=>/*your filter logic*/).ToList().Select(w => new { month = Convert.ToString(w.Col_datetime.Value.Month)})